我正在使用 -class 撰写论文scrbook
。是否可以仅在奇数页(右侧)显示脚注?
这应该意味着\footnote{something}
应该收集在偶数页上并显示在下一页(当然后面跟着本页的脚注)。
我在一些教科书中看到过这种行为,认为它非常好,但不知道如何实现这种风格。
附言:当然,当一章以偶数页结尾时,就必须违反这种方法。
MWE(没有按照我的要求执行):
\documentclass{scrbook}
\usepackage{blindtext}
\begin{document}
\blindtext[2]\footnote{First footnote}
\blindtext[2]\footnote{Second footnote}
\blindtext[2]\footnote{Third footnote}
\end{document}
输出:
看起来应该是这样的:
答案1
以下解决方案使用\label
-\ref
系统记录脚注并检索它,可能在当前页面上,或者可能\afterpage
:
\documentclass{scrbook}% http://ctan.org/pkg/KOMA-script
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage{afterpage,etoolbox,refcount}% http://ctan.org/pkg/{afterpage,etoolbox,refcount}
\patchcmd{\footnotemark}{\stepcounter}{\refstepcounter}{}{}% Update \footnotemark to allow \label-\ref
\let\oldfootnote\footnote% Store \footnote in \oldfootnote
\let\oldfootnotetext\footnotetext% Store \footnotetext in \oldfootnotetext
\newcounter{fntext}% Footnote text counter (for correct sequential retrieval of footnote text
\renewcommand{\footnotetext}{\stepcounter{fntext}\oldfootnotetext}
\renewcommand{\footnote}{\evenfootnote}
\newcommand{\evenfootnote}[1]{%
\leavevmode\footnotemark\label{evenfn-\thefootnote}% Set footnote mark
\ifodd\getpagerefnumber{evenfn-\thefootnote}\relax% Page is odd
\def\whichpage{\afterpage}% Footnote text on next page
\else
\def\whichpage{\relax}% Footnote text on current page
\fi%
\whichpage{\footnotetext[\getrefnumber{evenfn-\thefntext}]{#1}}% Set footnote text
}
\begin{document}
\lipsum[1-2]\evenfootnote{First footnote}
\lipsum[1-2]\evenfootnote{Second footnote}
\lipsum[1-2]\evenfootnote{Third footnote}
\lipsum[1-2]\evenfootnote{Fourth footnote}
\lipsum*[1]\evenfootnote{Mystery footnote}
\lipsum[1-2]\evenfootnote{Fifth footnote}
\lipsum[1-2]\evenfootnote{Sixth footnote}
\end{document}
refcount
提供可扩展的宏来提取页面引用,用于测试当前页面是否为奇数。
答案2
这可以是一个解决方案(看到图像,我假设你希望脚注在偶数页,而不是在奇数页)。
\documentclass{scrbook}
\usepackage{lipsum}
\usepackage{atbegshi,etoolbox}
\newcounter{newfoot}
\patchcmd{\footnotetext}{\thempfn}{\thenewfoot}{}{}
\newcommand{\evenfootnote}[1]{%
\ifodd\value{page}%
\footnotemark%
\AtBeginShipoutNext{%
\stepcounter{newfoot}\footnotetext{#1}%
}%
\else%
\stepcounter{newfoot}\footnote{#1}%
\fi%
}
\begin{document}
\lipsum[1-2]\evenfootnote{First footnote}
\lipsum[1-2]\evenfootnote{Second footnote}
\lipsum[1-2]\evenfootnote{Third footnote}
\lipsum[1-2]\evenfootnote{Fourth footnote}
\lipsum*[1]\evenfootnote{Mystery footnote}
\lipsum[1-2]\evenfootnote{Fifth footnote}
\lipsum[1-2]\evenfootnote{Sixth footnote}
\end{document}
输出:
我们使用这个技巧来定义一个新的计数器newfoot
并\footnotetext
使用这个:
\newcounter{newfoot}
\patchcmd{\footnotetext}{\thempfn}{\thenewfoot}{}{}
\AtBeginShipoutNext
当我们在奇数页时,只打印脚注标记,而利用包提供的命令在下一页打印脚注文本atbegshi
。
当我们处于偶数页时,\footnote
使用通常的命令。
因此我们定义一个新命令\evenfootnote
来处理上述操作:
\newcommand{\evenfootnote}[1]{%
\ifodd\value{page}%
\footnotemark%
\AtBeginShipoutNext{%
\stepcounter{newfoot}\footnotetext{#1}%
}%
\else%
\stepcounter{newfoot}\footnote{#1}%
\fi%
}
newfoot
请注意,每次打印脚注时,新计数器都会增加。