如何使批处理脚本/write18-call 适应 Linux 系统

如何使批处理脚本/write18-call 适应 Linux 系统

我想从 main.tex 文件编译一堆(独立)文档。这些文档位于子文件夹中,因为它们可以从其他子文件夹加载输入文件和图形,所以我需要更改当前目录。我认为这不能在调用中完成,\write18所以我先编写一个.bat脚本,然后调用它。我想调整代码,以便它也可以在 Linux 上运行,但由于我没有可用的 Linux 系统,我无法测试它。有人能告诉我这在 Linux 上应该是什么样子吗?(您需要文件夹 a1 和 a2,其中包含 a1.tex 和 a2.tex。)

\documentclass{article}

\begin{document}

\newwrite\writebatch
\immediate\openout\writebatch=compile-files.txt
\immediate\write\writebatch{cd a1}
\immediate\write\writebatch{pdflatex a1}
\immediate\write\writebatch{cd ..}
\immediate\write\writebatch{cd a2}
\immediate\write\writebatch{pdflatex a2}
\immediate\closeout\writebatch
\immediate\write18{copy compile-files.txt compile-files.bat}
\immediate\write18{compile-files.bat} 
%compile-files.bat will probably be called later  on the command line, is here for 
%the test. Needs --shell-escape. 


\end{document} 

答案1

我会使用子壳:

\documentclass{article}

\begin{document}

\newwrite\writebatch
\immediate\openout\writebatch=compile-files.sh
\immediate\write\writebatch{%
  (cd a1; pdflatex a1)^^J%
  (cd a2; pdflatex a2)^^J%
  exit
}
\immediate\closeout\writebatch
\immediate\write18{sh compile-files.sh}

\end{document}

相关内容