Notas de rodapé de memórias na margem com ragged2e

Notas de rodapé de memórias na margem com ragged2e

Gostaria de configurar memoirpara que quando eu usar \footnote{foo}, fooseja exibido na margem com o rótulo adequado e de preferência quebrando as páginas.

Existe uma opção \footnotesinmarginque dá quase exatamente o que preciso, apenas justificado. Quero usar ragged2ee 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 \footnotesinmarginprincipalmente 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 \footnotecom a opção \footnotesinmargine \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 \RaggedRightou \RaggedLeftcom 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 \footnotenotas 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 memoirclasse fornece um \mpjustificationcomando, que é habilitado chamando um dos seguintes:

  1. \marginparmargin{}

outeré o padrão, que define notas de margem na borda frontal. Isso também configura o comando abaixo.

  1. \setmpjustification{}{}

\raggedlefte \raggedrightsão padrão, que você pode querer alterar de \RaggedLefte \RaggedRightpara o ragged2epacote.

O \mpjustificationcomando justificará o texto seguinte dependendo da página em que o texto aparece.

Solução

Manipular o \foottextfontcomando 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}}

\footnoteagora definirá o texto na margem, alinhado com o bloco de texto.

informação relacionada