有没有一种标准方法可以自动将某些文件注入 LaTeX 序言中?当然我可以为此编写一些补丁代码,但我认为我应该检查是否有一些“首选”方法来完成这项工作。
灵感来自创建默认前导码假设的 MWE 如下:
我的前言.sty
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{mypreamble}
[2015/11/18 MyPreamble]
\RequirePackage[dvipsnames]{xcolor}
\endinput
文件.tex
\documentclass{article}
\newcommand{\wow}[1]{\textbf{Wow, much #1!}}
\begin{document}
\textcolor{red}{This works, trust me.}
\wow{color}
\end{document}
调用将会像这样:
smart-pdflatex --with-style mypreamble.sty file.tex
输出与运行相同
pdflatex smart-file.tex
智能文件.tex
\documentclass{article}
\usepackage{mypreamble}
\newcommand{\wow}[1]{\textbf{Wow, much #1!}}
\begin{document}
\textcolor{red}{This works, trust me.}
\wow{color}
\end{document}
请注意,上面的例子使用了article
类,但我希望有一个也适用于 等的解决方案;同样,如果memoir
有一个适用于 的配方就太好了。xelatex
pdflatex
目前,上述示例仅适用于article
× pdflatex
“象限”,使用下面 David Carlisle 的回答中的配方。切换article
到memoir
,我得到
! LaTeX Error: Command \@namelet already defined.
我xelatex
得到了
! LaTeX Error: Missing \begin{document}.
更新@cfr,2015 年 12 月 19 日,0123 UTC:
例如,使用mypreamble.sty
上述方法,并根据下面评论的建议调整编译命令,我尝试编译
文件.tex
\documentclass{memoir}
\newcommand{\wow}[1]{\textbf{Wow, much #1!}}
\begin{document}
\textcolor{red}{This works, trust me.}
\wow{color}
\end{document}
使用以下命令(所有内容都在一行上,没有多余的空格):
pdflatex -jobname=file \\documentclass[a4paper,11pt]{memoir}\\usepackage{mypreamble}\\renewcommand\\documentclass[2][]{}\\input{file}
我得到了错误
! LaTeX Error: \documen undefined.
更新 - 隐形角色(哎呀)
上面的命令与此命令看起来相同,但包含一个不可见字符,这是错误的根源。以下命令适用于memoir
。
pdflatex -jobname=file \\documentclass[a4paper,11pt]{memoir}\\usepackage{mypreamble}\\renewcommand\\documentclass[2][]{}\\input{file}
答案1
pdflatex -jobname=file \\RequirePackage{mypreamble} \\input{file}
在基本情况下可以工作(您可能需要或不需要加倍,这\\
取决于您的命令行 shell)
如果要求发生变化(例如xelatex
+ memoir
),则需要进行一些调整。
xelatex -jobname=file \\documentclass[a4paper,11pt]{memoir}\\usepackage{mypreamble}\\renewcommand\\documentclass[2][]{}\\input{file}