我有一个文件foo.tex
\documentclass{article}
\usepackage{pdfpages}
\newcommand{\hello}{Hello world!}
\begin{document}
\includepdf[pages=-]{bar}
This is foo.pdf.
\end{document}
使用该包导入了该文档的第一页pdfpages
,并由另一个文件生成了pdfbar.tex
\documentclass{amsart}
\title{Bar.pdf}
\begin{document}
\maketitle
This is bar.pdf.
% I want the macro \hello to be passed to this document.
\end{document}
此工作流程的烦人之处在于,更改bar.pdf
需要我重新编译bar.tex
。我希望bar.tex
每次编译时都能自动编译。这可能吗?如果可以,是否可以通过将定义foo.tex
的宏传递给 来实现?foo.tex
bar.tex
我知道一个名为的包combine
,但是阅读文档并没有让我相信它combine
能够解决我的问题。
更新。该命令在编译时\write18
出现,完成编译任务。bar.tex
foo.tex
\documentclass{article}
\immediate\write18{latex bar.tex}
\usepackage{pdfpages}
\newcommand{\hello}{Hello world!}
\begin{document}
\includepdf[pages=-]{bar}
This is foo.pdf.
\end{document}
不过,我仍然不确定如何将\hello
宏传递给bar.tex
。
答案1
您可以使用 shell-escape 来运行第二个文档,这假定 shell 中的 bash 语法可能需要对其他命令行进行微小更改
bar.tex 使用\hello
\documentclass{amsart}
\title{Bar.pdf}
\begin{document}
\maketitle
This is bar.pdf.
% I want the macro \hello to be passed to this document.
\hello
\end{document}
主文本
\documentclass{article}
\usepackage{pdfpages}
\newcommand{\hello}{Hello world!}
\immediate\write18{pdflatex \string\\def\string\\hello{\hello}\string\\input{bar}}
\begin{document}
\includepdf[pages=-]{bar}
This is foo.pdf.
\end{document}