我正在使用 TeXLive (2019),我想添加一个包(即kvoptions-patch
) 转换为所有默认 LaTeX 格式。正确的做法是什么?有什么缺点吗?
答案1
不建议更改格式,因为它会破坏兼容性,如评论中所述。但是,如果您仍然想使用这样的方法,并且假设您使用 Linux(假设特科利标签),那么一个简单的方法是使用 bash 脚本,该脚本会在加载文档本身之前自动加载包。基本思路是运行pdflatex "\RequirePackage{kvoptions-patch}\input{yourfile.tex}"
而不是pdflatex yourfile.tex
,例如https://tex.stackexchange.com/a/1495/有关此方法的更多讨论。请注意,我将其用作pdflatex
示例,但其工作原理xelatex
与lualatex
以下脚本相同,只需对脚本进行必要的修改即可。
该脚本应该能够处理命令行参数并将它们插入到命令本身和文档字符串之间,因此您需要在脚本中进行一些 bash 参数处理。
此外,输入的字符串会改变作业名称,即pdflatex
用于创建输出 pdf 文件名的字符串。要使用原始文件名,--jobname
必须明确设置命令行选项。
最后,您可以将常规编译器命令别名化为脚本,以保持与之前相同的工作流程。将其放入您的脚本中.bashrc
以使其永久生效。
脚本,名为myscript.sh
:
#!/usr/bin/env bash
function mypdflatex(){
mycmd="\pdflatex --jobname=$(basename "${!#}" .tex) "${*%${!#}}" \"\RequirePackage{kvoptions-patch}\input{${!#}}\""
eval "$mycmd"
}
加载脚本并创建别名:
source myscript.sh
alias pdflatex=mypdflatex
示例文档kvdummy.tex
,如果没有以下内容则会产生错误kvoptions-patch
:
\documentclass[pdfauthor=Fran\c coise M\"uller]{article}
\usepackage{hyperref}
\begin{document}
abc
\end{document}
编译文档(shell-escape
仅用于说明,运行示例不需要):
$ pdflatex --shell-escape kvdummy.tex
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex)
\write18 enabled.
entering extended mode
LaTeX2e <2017-04-15>
Babel <3.18> and hyphenation patterns for 84 language(s) loaded.
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions-patch.sty
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty)
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty)))
(./kvdummy.tex (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
...
Output written on kvdummy.pdf (1 page, 10434 bytes).
Transcript written on kvdummy.log.