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

Joh*_*han 7 latex

我有一个小问题,我想将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) )
Run Code Online (Sandbox Code Playgroud)

在LaTeX文档的最后我有这个:

\IfFileExists{diff.info.tex}
{
  \newpage
  \input{diff.info.tex}
}
Run Code Online (Sandbox Code Playgroud)

但这很难!

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

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

谢谢约翰


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

更新:我看起来也应该尝试las3rjock告诉我们的那些列表,因为它看起来很好.

更新:无法让我的案例中的列表工作,我得到一些关于无效字符的奇怪的警告.但逐字逐句是有效的,所以这次我会用这种方式.

las*_*ock 12

我对Boojum的另一个答案中的第二个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}
Run Code Online (Sandbox Code Playgroud)

LaTeX文档显示自己的源代码
(点击放大)


use*_*368 8

有一个verbatim包你可以包含\usepackage{verbatim}和使用\verbatiminput{文件名访问}.

  • 同意.我打算推荐列表包,它在\ lstinputlisting {filename}命令中提供相同的功能.特别是对于像diff这样的程序生成的文件,这是一种方法,因为它将包含的TeX文件保存为漂亮,干净的模板. (5认同)
  • 是的 - lstinputlisting几乎总是比verbatiminput好.我几乎在所有场合都避免逐字逐句. (3认同)