回忆录脚注在页边,附有 ragged2e

回忆录脚注在页边,附有 ragged2e

我想进行设置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命令,可以通过调用以下任一命令来启用:

  1. \marginparmargin{}

outer是默认设置,将边注设置在页首。这还会设置以下命令。

  1. \setmpjustification{}{}

\raggedleft\raggedright是默认的,您可能想将其更改为\RaggedLeft\RaggedRight中的默认设置ragged2e

\mpjustification命令将根据文本出现的页面来调整后续文本的对齐方式。

解决方案

操作\foottextfont命令是不够的,因为这只是出现在脚注内部的命令,而不是在脚注之前。基本上,您需要在脚注输出之前设置对齐方式。这很简单,只需在任何脚注样式命令之后放置以下内容:

\let\oldfootnot\footnote
\renewcommand*{\footnote}[1]{\oldfootnote{\mpjustification#1}}

\footnote现在将文本设置在边距中,并与类型块对齐。

相关内容