【问题标题】:How to show LaTeX-code in a LaTeX document?如何在 LaTeX 文档中显示 LaTeX 代码?
【发布时间】:2010-11-26 01:25:57
【问题描述】:

我有一个小问题,我想将 LaTeX 文档的 svn diff 插入到 另一个 LaTeX 文档,目标是显示自修订 XXX 以来发生了什么变化。 但是,由于 diff 包含很多 LaTeX 命令,我无法将其直接包含在文档中,因为 LaTeX 会插入它们而不仅仅是“打印”它们。

今天我的 Makefile 中有这个

DIFF_INFO=diff.info.tex
DIFF_REV=167
diffinfo:
    $(shell echo "\n" > $(DIFF_INFO) )
    $(shell echo "\\section{diff $(DIFF_REV)} \n" >> $(DIFF_INFO) )
    $(shell echo \\\\begin{verbatim} >> $(DIFF_INFO) )
    $(shell svn diff --revision $(DIFF_REV) $(N).tex >> $(DIFF_INFO) )
    $(shell echo \\\\end{verbatim} >> $(DIFF_INFO) )

在 LaTeX 文档的末尾我有这个:

\IfFileExists{diff.info.tex}
{
  \newpage
  \input{diff.info.tex}
}

但这很难失败!

我的下一个想法是编写一个 perl 脚本,用 LaTeX 可以显示的内容替换所有无效字符,但感觉就像我冒着重新发明轮子的风险,所以我想我可以问一下是否有人有更好的主意?

如何在文档中包含和显示 LaTeX 代码?

谢谢 约翰


更新: 感谢“未知(谷歌)”逐字指出,它做了我想要的。

更新: 我也觉得我应该试试 las3rjock 告诉我们的列表,因为它看起来不错。

更新: 无法让列表在我的情况下工作,我收到一些关于无效字符的奇怪 utf 警告。但是逐字记录是有效的,所以这次我将使用这种方式。

【问题讨论】:

    标签: latex


    【解决方案1】:

    我在对您使用 listings 包的另一个答案的评论中支持 Boojum 的建议。对于 LaTeX 代码列表,我使用在 André Miede 的 classicthesis 包中找到的设置。这是一个示例文档 (quine.tex) 及其输出:

    \documentclass[12pt,letterpaper]{article}
    \usepackage{listings}
    \usepackage[usenames,dvipsnames]{color}
    
    % listings settings from classicthesis package by
    % Andr\'{e} Miede
    \lstset{language=[LaTeX]Tex,%C++,
        keywordstyle=\color{RoyalBlue},%\bfseries,
        basicstyle=\small\ttfamily,
        %identifierstyle=\color{NavyBlue},
        commentstyle=\color{Green}\ttfamily,
        stringstyle=\rmfamily,
        numbers=none,%left,%
        numberstyle=\scriptsize,%\tiny
        stepnumber=5,
        numbersep=8pt,
        showstringspaces=false,
        breaklines=true,
        frameround=ftff,
        frame=single
        %frame=L
    }
    
    \begin{document}
    \lstinputlisting{quine.tex}
    \end{document}
    


    (click to enlarge)

    【讨论】:

    • 这是列表包的最佳解决方案之一。我什至做了一个特殊的包含,它为 php、xml、sql 等定义了几种语言设置......
    【解决方案2】:

    有一个verbatim 包,您可以将其包含在\usepackage{verbatim} 中,并使用\verbatiminput{filename} 访问。

    【讨论】:

    • 同意。我将推荐在 \lstinputlisting{filename} 命令中提供相同功能的列表包。特别是对于以编程方式生成的文件(如 diff),这是要走的路,因为它将包含的 TeX 文件保持为一个漂亮、干净的模板。
    • 是的 - lstinputlisting 几乎总是比逐字输入更好。我几乎在所有场合都避免逐字逐句。
    猜你喜欢
    • 1970-01-01
    • 2016-05-05
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2010-12-30
    • 1970-01-01
    相关资源
    最近更新 更多