我在 Windows 计算机和 Mac 上都运行 TeX,两台计算机上的序言相同,但路径不同。
是否有可能以某种方式创建一个代码,可以自动将我的序言输入到我的 Windows 上的正确路径和我的 Mac 上的正确路径中?
类似于下面的内容,尽管它与 LaTeX 无关:
if(system=Windows)]\input {c:\\premable.tex}]
if(system=OSX)]\input {../user/premable.tex}]
答案1
只需使用
\input{preamble}
或者更好的是,将文件从重命名premable.tex
为preamble.sty
并使用
\usepackage{preamble}
您不需要使用路径,就像在包含标准包时不使用完整路径一样,例如inputenc
。
然后你只需要把文件放在两台机器的输入路径中,因此与文档相同的文件夹或由 TEXINPUTS 指定的文件夹中,默认情况下,texlive 包含一个本地文件夹。位置取决于平台,在我的 cygwin 安装中,这是一个正常的 TDS 树,~/texmf
所以我把它放在
~/texmf/tex/latex/mypreamble/preamble.sty
如果您想将文件放在预先存在的位置,这也是可以的,但只需编辑文件texmf.cnf
以设置$TEXINPUTS
为包含您放置文件的位置。
kpsewhich texmf.cnf
将显示该控制文件的位置。
答案2
将前言放在$TEXINPUTS
目录中是正确的方法,但如果您想要在其他地方保留前言,一种替代方法是\IfFileExists
检查是否/path/preamble.tex
存在具体内容。下一个示例进行嵌套检查并根据正在使用的前言添加一些文本。如果未找到任何前言,则只会编译错误消息。
\documentclass{article}
\IfFileExists{/pathA/preamble.tex}%
{\input{/pathA/preamble}\AtEndDocument{the A preamble.}}%
{\IfFileExists{/pathB/preamble.tex}%
{\input{/pathB/preamble}\AtEndDocument{the B preamble.}}%
{\AtBeginDocument{\Huge\bfseries I need a preamble!!\end{document}}}}
\begin{document}
Hello ! I have
\end{document}
当然,为了更容易检查结果,请 用硬盘的实际路径进行更改,并在两个前言中放入一些不同的东西(/pathA/
例如,一个前言中的字体和另一个前言中的字体)。/pathB/
bookman
electrum