我想进行设置memoir
,以便当我使用时\footnote{foo}
,foo
在边距中显示适当的标签,并且最好跨越页面。
有一个选项\footnotesinmargin
几乎完全满足我的需要,只是对齐了。我希望它使用ragged2e
并根据偶数/奇数页更改对齐方式,以便边注始终与主文本区域对齐,并允许在边缘一侧使用连字符。
\documentclass[12pt, draft]{memoir}
\footnotesinmargin
\usepackage{polyglossia}
\setmainlanguage{english}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont[Ligatures=TeX,Numbers=OldStyle]{Minion Pro}
\usepackage{kantlipsum}
\begin{document}
\kant[1]\footnote{\kant[1]}
\kant[2]\footnote{\kant[2]}
\kant[3-5]
\end{document}
可能的部分解决方法
我记得一篇基于经典论文模板的优秀论文,并找到了来源其中确实包含一个可能的解决方案:
\usepackage{marginnote}
\usepackage{ragged2e}
\newcommand{\sidemark}[1]{#1.{\:}}
\newcommand{\marginelement}[2][0]{%
\marginnote{%
\strictpagechecktrue
\checkoddpage
\ifoddpage%
\RaggedRight\footnotesize%
\else%
\RaggedLeft\footnotesize%
\fi%
#2%
}[#1\onelineskip]%
}%
\newcommand{\sidenote}[2][0]{%
\footnotemark%
\ignorespaces%
\marginelement[#1]{%
\sidemark{\thefootnote}%
\ignorespaces#2%
}%
\unskip%
}%
尽管如此,我仍然更喜欢使用重新定义脚注的回忆录专用解决方案,\footnotesinmargin
主要是为了便于携带。这种解决方法也不适用于 hyperref(没有超文本连接)和不跨页自动地。
答案1
我终于明白了,但我暂时不会接受这个答案,因为我认为可以做得更好。
我将和\footnote
选项结合起来使用。前者可用于制作与参考标记垂直对齐的边注,适用于不跨页的短注;而后者与页面底部对齐,跨页,适用于较长的注解或空间不足的情况。\footnotesinmargin
\sidefootnote
两者都被黑客入侵,变成\RaggedRight
或\RaggedLeft
基于它们出现的页面是偶数还是奇数,代码如下:
修改行为\footnote
:
\makeatletter % All between \makeatletter and \makeatother originally located in memoir.cls
\renewcommand{\@footnotetext}[1]{%
\ifm@mfnmargin% use marginpar
\marginpar{%
\def\baselinestretch{\m@m@footnote@spacing}%
\reset@font
\foottextfont
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark}%
\color@begingroup
\@makefntext{\ignorespaces
\strictpagechecktrue % <-- Start of change
\checkoddpage
\ifoddpage
\scriptsize\RaggedRight
\else
\scriptsize\RaggedLeft
\fi #1}% <-- End of change
\color@endgroup}%
\else% regular feet
\insert\footins{%
\def\baselinestretch{\m@m@footnote@spacing}%
\reset@font
\foottextfont
\@preamfntext
\hsize\columnwidth
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark}%
\color@begingroup
\@makefntext{%
\rule\z@\footnotesep\ignorespaces{\foottextfont #1}%
\@finalstrut\strutbox}%
\color@endgroup}%
\fi%
\m@mmf@prepare}
\makeatother
\footnotesinmargin
修改行为\sidefootnote
:
\renewcommand{\sidefoottextfont}{%
\strictpagechecktrue
\checkoddpage
\ifoddpage
\scriptsize\RaggedRight
\else
\scriptsize\RaggedLeft
\fi
}%
其他修改
您可能还想添加
\letcountercounter{sidefootnote}{footnote}
如果你想把他们的计数器合并成一个,并且
\setlength{\footmarkwidth}{0em}
\setlength{\footmarksep}{-\footmarkwidth}
\setlength{\footparindent}{1em}
修改侧注的外观\footnote
以使其匹配\sidefootnote
。
最后,我必须说,TeX 是混乱的定义。
答案2
您想要操纵\foottextfont
。
按照这样的思路应该可以解决问题:
\documentclass[12pt, draft]{memoir}
\usepackage{ragged2e}
\footnotesinmargin
\renewcommand{\foottextfont}{%
\strictpagechecktrue
\checkoddpage
\ifoddpage
\scriptsize\RaggedRight
\else
\scriptsize\RaggedLeft
\fi
}%
\usepackage{marginfix}
\usepackage{polyglossia}
\setmainlanguage{english}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont[Ligatures=TeX,Numbers=OldStyle]{Minion Pro}
\usepackage{kantlipsum}
\begin{document}
\kant[1]\footnote{\kant[1]}
\kant[2]\footnote{\kant[2]}
\kant[3-5]
\end{document}
但请注意,由于页边距如此之厚,您能够正确放置注释的可能性很小。我在论文中遇到了类似的问题,最后增加了页边距,这样就不会遇到本例中的问题(脚注 #2 最终出现在错误的页面上)。
答案3
我不确定如何让它跨页面显示,但为了证明其合理性,有一个非常简单的解决方法。
背景
该类memoir
提供了一个\mpjustification
命令,可以通过调用以下任一命令来启用:
\marginparmargin{}
outer
是默认设置,将边注设置在页首。这还会设置以下命令。
\setmpjustification{}{}
\raggedleft
和\raggedright
是默认的,您可能想将其更改为\RaggedLeft
包\RaggedRight
中的默认设置ragged2e
。
该\mpjustification
命令将根据文本出现的页面来调整后续文本的对齐方式。
解决方案
操作\foottextfont
命令是不够的,因为这只是出现在脚注内部的命令,而不是在脚注之前。基本上,您需要在脚注输出之前设置对齐方式。这很简单,只需在任何脚注样式命令之后放置以下内容:
\let\oldfootnot\footnote
\renewcommand*{\footnote}[1]{\oldfootnote{\mpjustification#1}}
\footnote
现在将文本设置在边距中,并与类型块对齐。