我的前言.sty

我的前言.sty

有没有一种标准方法可以自动将某些文件注入 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有一个适用于 的配方就太好了。xelatexpdflatex

目前,上述示例仅适用于article× pdflatex“象限”,使用下面 David Carlisle 的回答中的配方。切换articlememoir,我得到

! 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\\documen‌​tclass[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}

相关内容