例如,我想用以下代码实现不同的脚注符号:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\footnote{This is the first footnote.}
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
\footnote[Roman]{This is the another first footnote.}
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
\footnote{the second footnote.}
还有这些脚注:
1 这是第一个脚注。i
这是另一个第一个脚注。
2 第二个脚注。
我已经仔细研究过footmisc
和\renewcommand
,但不幸的是,这并没有像我希望的那样发挥作用。我该如何实现呢?
答案1
首先,我会不是建议您使用的语法,因为标准 LaTeX\footnote
已经采用了可选参数(替换脚注编号)。
我个人认为,如果脚注与“类似”脚注组合在一起,会更清晰;也就是说,所有阿拉伯数字编号的脚注首先出现,然后是所有罗马数字编号的脚注。如果您对上一句中建议的样式感到满意,那么您可以使用manyfoot
:
代码:
\documentclass{article}
\usepackage[a6paper]{geometry} % Just so that the demo output has less useless whitespace
\usepackage{manyfoot}
\DeclareNewFootnote{R}[roman]
\begin{document}
Test\footnote[14]{Should be 14}. Test\footnote{Should be 1}. Test\footnoteR{Should be i}. Test\footnoteR[15]{Should be xv}. Test\footnote{Should be 2}. Test\footnoteR{Should be ii}.
\end{document}
请注意,其manyfoot
语法与您建议的语法不同。但这可能是所需工作量最少的选项,并且可能具有经过更好测试的代码。
现在,manyfoot
按设计将不同的脚注系列分开打印;其设计方式与脚注系列混合不兼容。如果您希望将系列混合,以下是精简版另一个先前给出的答案。
代码:
\documentclass{article}
\usepackage[a6paper]{geometry} % Just so that the demo output has less useless whitespace
\let\oldfootnote\footnote
\makeatletter
\newcommand*\DeclareFootnoteOption[2]{
\newcounter{footnote#1}
\expandafter\def\csname footnote#1\endcsname{%
\def\@mpfn{footnote#1}%
\def\thempfn{\csname#2\endcsname{footnote#1}}%
\oldfootnote}
}
\makeatother
\DeclareFootnoteOption{A}{arabic}
\DeclareFootnoteOption{R}{roman}
\def\footnote{\footnoteA} % So that \footnote becomes a shorthand for \footnoteA
\begin{document}
Test\footnote[14]{Should be 14}. Test\footnote{Should be 1}. Test\footnoteR{Should be i}. Test\footnoteR[15]{Should be xv}. Test\footnote{Should be 2}. Test\footnoteR{Should be ii}.
\end{document}
\footnote
这里我们利用了这样一个事实,即in的默认定义latex.ltx
具有内置的灵活性,可以使用其他计数器和脚注标记的其他格式。
最后,如果您更喜欢将格式选项作为可选参数传递给的语法\footnote
,请考虑以下内容,它使用定义\NewDocumentCommand
为使用()
作为格式参数的分隔符。
\documentclass{article}
\usepackage[a6paper]{geometry} % Just so that the demo output has less useless whitespace
\let\oldfootnote\footnote
\makeatletter
\newcommand*\DeclareFootnoteOption[2]{
\newcounter{footnote#1}
\expandafter\def\csname footnote#1\endcsname{%
\def\@mpfn{footnote#1}%
\def\thempfn{\csname#2\endcsname{footnote#1}}%
\oldfootnote}
}
\makeatother
\DeclareFootnoteOption{arabic}{arabic}
\DeclareFootnoteOption{roman}{roman}
\RenewDocumentCommand\footnote{D(){arabic}}{\csname footnote#1\endcsname}
\begin{document}
Test\footnote[14]{Should be 14}. Test\footnote{Should be 1}. Test\footnote(roman){Should be i}. Test\footnote(roman)[15]{Should be xv}. Test\footnote{Should be 2}. Test\footnote(roman){Should be ii}.
\end{document}
答案2
这是我使用名为 的命令做出的一个相当粗略的解决方案,该命令为、、和\specialfootnote
中的每个计数器样式设置不同的计数器。在下面的示例中,小写脚注和普通阿拉伯数字脚注彼此独立编号。roman
Roman
alph
Alph
roman
\documentclass{article}
\newcounter{footnoteroman}\setcounter{footnoteroman}{0}
\newcounter{footnoteRoman}\setcounter{footnoteRoman}{0}
\newcounter{footnotealph} \setcounter{footnotealph}{0}
\newcounter{footnoteAlph} \setcounter{footnoteAlph}{0}
\def\specialfootnote[#1]#2{%
{%
\setcounter{footnote}{\value{footnote#1}}%
\renewcommand{\thefootnote}{\csname#1\endcsname{footnote}}\footnote{#2}%
\addtocounter{footnote}{-1}%
}%
\stepcounter{footnote#1}%
}
\begin{document}
I am number one.\footnote{This is the first footnote.}
I am also number one.\specialfootnote[roman]{This is the another first footnote.}
I am number two.\specialfootnote[roman]{The second footnote.}
I am number two, too.\footnote{The second footnote, part two.}
I am number three.\footnote{Third footnote.}
I am number four.\footnote{Fourth footnote}
I am still three.\specialfootnote[roman]{Third footnote, again.}
\end{document}