頁邊空白處帶有 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我將與選項\footnotesinmarginand結合使用\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更改。\RaggedRightragged2e

\mpjustification命令將根據文字顯示的頁面來調整以下文字。

解決方案

操作\foottextfont命令是不夠的,因為這只是出現在腳註內而不是之前的命令。基本上,您需要在輸出腳註之前設定理由。非常簡單,只需將以下內容放在任何腳註樣式命令之後即可:

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

\footnote現在將在邊距中設置文本,對齊類型塊。

相關內容