我有一个很长的源文件。我想从这个源文件准备两个 PDF 文件:
PDF 包含所有源文件
PDF 仅包含一些标有较早部分的源文件。
我应该如何标记源文件以及如何在 LateX 中准备主文件以实现第 2 点?
答案1
在您的长 TeX 输入文件(您的源)中,使用\ifsecret ... \fi
来夹住您想要包含或排除的秘密部分。公共部分将始终包含在内,因此不要将它们夹在中间。
% filename.tex
\documentclass[preview,border=12pt]{standalone}
\newif\ifsecret
\begin{document}
common 1
\ifsecret
I have a top secret message here.
\fi
common 2
\end{document}
按照如下方式创建批处理文件。
pdflatex -jobname=secret-included "\AtBeginDocument{\secrettrue} \input{filename}"
pdflatex -jobname=secret-excluded "\AtBeginDocument{\secretfalse} \input{filename}"
下面模拟您的问题。
% compile with pdflatex -shell-escape
\documentclass[preview,border=12pt]{standalone}
\usepackage{filecontents}
\begin{filecontents*}{filename.tex}
\documentclass[preview,border=12pt]{standalone}
\newif\ifsecret
\begin{document}
common 1
\ifsecret
I have a top secret message here.
\fi
common 2
\end{document}
\end{filecontents*}
\usepackage{graphicx}
\begin{document}
\immediate\write18{\unexpanded{pdflatex -jobname=secret-included "\AtBeginDocument{\secrettrue} \input{filename}"}}
\immediate\write18{\unexpanded{pdflatex -jobname=secret-excluded "\AtBeginDocument{\secretfalse} \input{filename}"}}
Done, secret-included.pdf and secret-excluded.pdf have been generated!
\fbox{\includegraphics[width=.5\linewidth]{secret-included}}%
\fbox{\includegraphics[width=.5\linewidth]{secret-excluded}}
\end{document}