Я хотел бы настроить так , 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
теперь текст будет располагаться на полях, выровненным по ширине блока текста.