Existe uma maneira de alinhar a marca da nota de rodapé com a parte superior do texto da nota de rodapé?

Existe uma maneira de alinhar a marca da nota de rodapé com a parte superior do texto da nota de rodapé?

Aqui está um MWE:

\documentclass[12pt]{scrartcl}
%%Footnote Mods%%
\deffootnote[1.8em]{0pt}{1.6em}{\textsuperscript{\thefootnotemark}}
%%%%%%
\begin{document}

Sample text%
%
\footnote{Footnote text}
%
\end{document}

Como alinho a parte superior da marca da nota de rodapé com a parte superior do texto da nota de rodapé (no MWE, quero que a parte superior do “1” fique alinhada com o “F”)?

Novo erro: ao implementar a (ótima) solução de Werner, encontrei um erro ao tentar adicionar qualquer coisa com um "\" no texto da nota de rodapé.

Observar:

\documentclass[12pt]{scrartcl}% http://ctan.org/pkg/koma-script
\usepackage{xstring}% http://ctan.org/pkg/xstring
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
% Patch \scr@saved@footnotetext to extract first character of footnote and store         in \fnfirstchar
\patchcmd{\scr@saved@footnotetext}% <cmd>
  {\@makefntext}% <search>
    {\StrLeft{#1}{1}[\fnfirstchar]\@makefntext}% <replace>
    {}{}% <success><failure>
\begin{document}

\makeatletter
\deffootnote[1.8em]{0pt}{1.6em}{%
  \settoheight{\@tempdima}{\fnfirstchar}% Height of first character in footnote
  \settoheight{\@tempdimb}{$\scriptstyle\thefootnotemark$}% Height of footnote mark
  \raisebox{\dimexpr\@tempdima-\@tempdimb}{$\scriptstyle\thefootnotemark$}}
\makeatother

Sample text\footnote{Footnote text: \S modified}.

\end{document}

Responder1

A resposta curta para isso é que o “posicionamento exato” nem sempre é possível. Por que? É importante notar que o TeX funciona com caixas e não com caracteres. Cada caractere possui uma caixa delimitadora que define seu tamanho/estrutura horizontal e vertical. Assim, o alinhamento dos elementos só pode ser feito até a precisão dessas caixas. Nesse sentido, o melhor que você pode fazer é provavelmente:

\makeatletter
\deffootnote[1.8em]{0pt}{1.6em}{%
  \settoheight{\@tempdima}{F}% Height of F
  \settoheight{\@tempdimb}{$\scriptstyle\thefootnotemark$}% Height of footnote mark
  \raisebox{\dimexpr\@tempdima-\@tempdimb}{$\scriptstyle\thefootnotemark$}}
\makeatother

Isso armazena a altura Fe uma \scriptstylemarca de nota de rodapé em \@tempdimae \@tempdimb, respectivamente (estes são registros de rascunho). Em seguida, eleva a marca de rodapé (dada por \thefootnotemark) para a altura correta. O resultado não é o esperado, devido às “restrições do boxe”. Aqui está um exemplo mínimo mostrando as diferentes saídas, apenas como exemplo. Também é atualizado para capturar o primeiro caractere da nota de rodapé (em vez de fixá-lo no caractere F):

insira a descrição da imagem aqui

\documentclass[12pt]{scrartcl}% http://ctan.org/pkg/koma-script
\usepackage{xstring}% http://ctan.org/pkg/xstring
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
% Patch \scr@saved@footnotetext to extract first character of footnote and store in \fnfirstchar
\patchcmd{\scr@saved@footnotetext}% <cmd>
  {\@makefntext}% <search>
    {\StrLeft{#1}{1}[\fnfirstchar]\@makefntext}% <replace>
    {}{}% <success><failure>
\begin{document}

% Original footnote modification
\deffootnote[1.8em]{0pt}{1.6em}{\textsuperscript{\thefootnotemark}}
Sample text\footnote{Footnote text: original}.

\addtocounter{footnote}{-1}% Restore counter value

\makeatletter
\deffootnote[1.8em]{0pt}{1.6em}{%
  \settoheight{\@tempdima}{\fnfirstchar}% Height of first character in footnote
  \settoheight{\@tempdimb}{$\scriptstyle\thefootnotemark$}% Height of footnote mark
  \raisebox{\dimexpr\@tempdima-\@tempdimb}{$\scriptstyle\thefootnotemark$}}
\makeatother

Sample text\footnote{Footnote text: modified}.

\end{document}

xstringcaptura o primeiro caractere da nota de rodapé (via \StrLeft) e o armazena em \fnfirstchar, enquantoetoolboxcorrige o comando apropriado inserindo a extração no local certo (depoiso texto da nota de rodapé foi lido, masantesestá sendo digitado).

Como ilustração, colocar a marca da nota de rodapé e Fo caractere mostra que eles estão colocados na mesma altura (como o TeX vê):

insira a descrição da imagem aqui

Responder2

Uma forma menos técnica, mas mais tipográfica, seria usar o pacotesuperiors. Citando o manual:

O comportamento padrão dos marcadores de notas de rodapé e notas finais no LaTeX é imprimir o número como se fosse um sobrescrito matemático. Na maioria dos casos, isso significa que o tamanho é cerca de 70% do valor normal do forro e o topo está um pouco acima do topo das letras maiúsculas. Em muitos casos, o valor sobrescrito é simplesmente reduzido em todas as dimensões em cerca de 70%, fazendo-as parecer um tanto pequenas, embora excessivamente altas. [...]

Como alternativa, pode-se usar algarismos superiores - algarismos pequenos, geralmente de 50% a 60% da altura dos algarismos de revestimento, como 1234567890. Geralmente, eles são projetados de forma que o topo dos números fique alinhado com o topo das letras maiúsculas. na fonte, embora às vezes um pouco mais alta, correspondendo à altura do ascendente.

\documentclass[12pt]{scrartcl}
%%Footnote Mods%%
\deffootnote[1.8em]{0pt}{1.6em}{\textsu{\thefootnotemark}\,}
%%%%%%
\usepackage{newtxtext}
\usepackage[supstfm=ntxsups,supspaced=.06em]{superiors}
\begin{document}

Sample text%
%
\footnote{Footnote text}
%
\end{document}

insira a descrição da imagem aqui

Além disso, a opção de pacote raised=<dim>permitiria ajustar a posição vertical dos números sobrescritos. É claro que a posição vertical não dependeria dos caracteres seguintes. (Mas e se o token a seguir for uma asequência pequena ou de controle?)

Responder3

Não vi necessidade de carregar nenhum pacote na solução do Werner. Ambosetoolboxecadeia de caracteressão pacotes relativamente grandes.

\documentclass[12pt]{scrartcl}
\makeatletter
\begingroup
\let\@tempa\scr@saved@footnotetext
\edef\@tempa{\endgroup
  \def\noexpand\scr@saved@footnotetext##1{%
    \unexpanded\expandafter{\@tempa{#1}}%
    \unexpanded{\fngetfirstchar\fnfirstchar{#1}}%
  }%
}
\@tempa
\def\fngetfirstchar#1#2{%
  \begingroup
  \def\@tempa##1##2\fn@nil{\endgroup\gdef#1{##1}}%
  \expandafter\@tempa#2\fn@nil
}
\def\usenewfootnotestyle{%
  \deffootnote[1.8em]{0pt}{1.6em}{%
    \begingroup
    \let\s\ensuremath
    \settoheight{\@tempdima}{\fnfirstchar}%
    \settoheight{\@tempdimb}{\s{\scriptstyle\thefootnotemark}}%
    \raisebox{\dimexpr\@tempdima-\@tempdimb}{\s{\scriptstyle\thefootnotemark}}%
    \endgroup
  }%
}
\makeatother
\begin{document}
% Original footnote style:
\deffootnote[1.8em]{0pt}{1.6em}{\textsuperscript{\thefootnotemark}}
Sample text\footnote{Footnote text: original}.
\par
\addtocounter{footnote}{-1}
% Change footnote style:
\usenewfootnotestyle

Sample text\footnote{Footnote text: modified}.
\end{document}

informação relacionada