2009-09-06 98 views
7

我有一个小问题,我想将LaTeX文档的svn diff插入到另一个LaTeX文档 中,目标是显示修订版XXX后发生的变化。 但是由于diff包含很多LaTeX命令,我不能直接将它包含到文档中,因为LaTeX会将它们插入并且不仅仅是“打印”它们。如何在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警告。但是,逐字记录正在发挥作用,所以这次我会用这种方式。

回答

7

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

+5

同意。我打算推荐在\ lstinputlisting {filename}命令中提供相同内容的列表包。特别是对于编程生成的文件(比如差异文件),这是继续前进的方式,因为它将包含TeX文件保存为一个非常干净的模板。 – Boojum 2009-09-06 18:46:31

+3

是的 - lstinputlisting几乎总是比verbatiminput更好。几乎在所有场合我都会逐字避免。 – 2009-09-06 20:10:54

12

我第二个Boojum的建议在对另一个答案的评论中使用了listings包。对于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} 

LaTeX document displaying its own source code
(click to enlarge)

+0

这是上市套餐的最佳解决方案之一。我甚至做了一个特殊的包括,定义了几种语言设置的PHP,XML,SQL等... – Sorcerer86pt 2012-10-23 09:48:43