我正在处理一个类文件,其中的注释默认为尾注,但可以通过类选项转换为脚注(这是因为我所在领域的一些著名期刊要求提交的文章带有尾注;这表面上是为了让排字员的工作更轻松,但考虑到尾注读起来很麻烦,每个人在将论文上传到存储库之前做的第一件事就是将尾注更改为脚注)。最小的类文件如下所示
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mwe}[18/05/2015, MWE]
\PassOptionsToClass{12pt}{article}
\LoadClass{article}
\RequirePackage{endnotes}
\DeclareOption{endnotes}{\let\footnote=\endnote}
\DeclareOption{footnotes}{}
\ExecuteOptions{endnotes}
\ProcessOptions
以及 MWE.tex
文件
\documentclass{mwe}
\usepackage{lipsum}
\begin{document}
\lipsum\footnote{First footnote}
\lipsum\footnote{Second footnote}
\theendnotes
\end{document}
mwe.tex
不使用类选项或使用选项进行编译endnotes
都会产生两个尾注,正如预期的那样。但是,使用选项进行编译footnote
会删除所有注释,即使我也删除了该\theendnotes
行。
实现此选项的最佳方法是什么?
答案1
您可以有条件地加载 endnotes 包
mwe.cls:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mwe}[18/05/2015, MWE]
\PassOptionsToClass{12pt}{article}
\LoadClass{article}
\newif\if@endnotes
\DeclareOption{endnotes}{\@endnotestrue}
\DeclareOption{footnotes}{\@endnotesfalse}
\ExecuteOptions{endnotes}
\ProcessOptions
\if@endnotes
\RequirePackage{endnotes}
\let\footnote=\endnote
\fi
\providecommand\theendnotes\relax
您可以创建一个条件来跟踪要使用哪种类型的注释
\newif\if@endnotes
然后在处理选项之后有条件地加载尾注包:
\if@endnotes
\RequirePackage{endnotes}
\let\footnote=\endnote
\fi
您不能仅仅加载选项内的包,因为包不能在类文件的该位置加载。
最后,\theendnotes
即使使用脚注,您也可以将其留在文档中,如果尚未定义,请让类定义它:
\providecommand\theendnotes\relax