Gostaria de configurar memoir
para que quando eu usar \footnote{foo}
, foo
seja exibido na margem com o rótulo adequado e de preferência quebrando as páginas.
Existe uma opção \footnotesinmargin
que dá quase exatamente o que preciso, apenas justificado. Quero usar ragged2e
e alterar o alinhamento com base na página par/ímpar, para que a nota da margem fique sempre alinhada com a área de texto principal e permita a hifenização na lateral da borda.
\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}
Possível solução parcial
Lembrei-me de uma bela tese baseada no modelo de tese clássico e encontrei ofonteque de fato contém uma solução possível:
\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%
}%
No entanto, eu ainda preferiria uma solução específica para memórias com a redefinição das notas de rodapé quando usada com a opção \footnotesinmargin
principalmente por uma questão de portabilidade. Esta solução alternativa tambémnão funciona com hiperref(não há conexão de hipertexto) enão quebra páginasautomaticamente.
Responder1
Finalmente descobri, mas não vou aceitar esta resposta ainda porque acho que pode ser feito melhor.
Estou combinando o uso de \footnote
com a opção \footnotesinmargin
e \sidefootnote
. O primeiro pode ser usado para fazer uma nota de margem alinhada verticalmente com a marca de referência e destina-se a notas curtas que não se quebram nas páginas, enquanto o último é alinhado na parte inferior de uma página, quebra nas páginas e se destina a notas mais longas. ou se você estiver ficando sem espaço.
Ambos são hackeados para se tornarem \RaggedRight
ou \RaggedLeft
com base no fato de a página em que aparecem ser par ou ímpar por este código:
Modifique o comportamento de \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
Modifique o comportamento de \sidefootnote
:
\renewcommand{\sidefoottextfont}{%
\strictpagechecktrue
\checkoddpage
\ifoddpage
\scriptsize\RaggedRight
\else
\scriptsize\RaggedLeft
\fi
}%
Modificações adicionais
Você também pode querer adicionar
\letcountercounter{sidefootnote}{footnote}
se você quiser combinar seus contadores em um, e
\setlength{\footmarkwidth}{0em}
\setlength{\footmarksep}{-\footmarkwidth}
\setlength{\footparindent}{1em}
para modificar a aparência das \footnote
notas laterais para que correspondam \sidefootnote
.
Finalmente, devo dizer que TeX é a definição de caos.
Responder2
Você quer manipular o arquivo \foottextfont
.
Algo nesse sentido deve resolver o problema:
\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}
Observe, porém, que com um material de margem tão pesado, as chances de você conseguir colocar as notas corretamente são mínimas. Encontrei um problema semelhante em minha tese e acabei aumentando o espaço da margem para não ter um problema como o deste exemplo (onde a nota de rodapé nº 2 acaba na página errada).
Responder3
Não tenho certeza de como fazer isso quebrar as páginas, mas, para justificativa, há uma solução extremamente simples.
Fundo
A memoir
classe fornece um \mpjustification
comando, que é habilitado chamando um dos seguintes:
\marginparmargin{}
outer
é o padrão, que define notas de margem na borda frontal. Isso também configura o comando abaixo.
\setmpjustification{}{}
\raggedleft
e \raggedright
são padrão, que você pode querer alterar de \RaggedLeft
e \RaggedRight
para o ragged2e
pacote.
O \mpjustification
comando justificará o texto seguinte dependendo da página em que o texto aparece.
Solução
Manipular o \foottextfont
comando não é suficiente, pois este é apenas um comando que aparece dentro de uma nota de rodapé, e não antes dela. Basicamente, você precisa configurar a justificativa antes que a nota de rodapé seja produzida. É muito simples, basta colocar o seguinte após qualquer comando de estilo de nota de rodapé:
\let\oldfootnot\footnote
\renewcommand*{\footnote}[1]{\oldfootnote{\mpjustification#1}}
\footnote
agora definirá o texto na margem, alinhado com o bloco de texto.