如何从同一源创建两个 PDF 输出

如何从同一源创建两个 PDF 输出

我有一个很长的源文件。我想从这个源文件准备两个 PDF 文件:

  1. PDF 包含所有源文件

  2. 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}

在此处输入图片描述

相关内容