Gibt es eine Möglichkeit, das Fußnotenzeichen mit der Oberkante des Fußnotentextes auszurichten?

Gibt es eine Möglichkeit, das Fußnotenzeichen mit der Oberkante des Fußnotentextes auszurichten?

Hier ist ein MWE:

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

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

Wie richte ich die Oberkante des Fußnotenzeichens an der Oberkante des Fußnotentextes aus (im MWE möchte ich, dass die Oberkante der „1“ bündig mit dem „F“ abschließt)?

Neuer Fehler: Beim Implementieren der (großartigen) Lösung von Werner ist mir ein Fehler begegnet, als ich versucht habe, irgendetwas mit einem "\" darin in den Fußnotentext einzufügen.

Beobachten:

\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}

Antwort1

Die kurze Antwort darauf ist, dass eine „exakte Platzierung“ nicht immer möglich ist. Warum? Es ist wichtig zu beachten, dass TeX mit Kästen und nicht mit Zeichen arbeitet. Jedes Zeichen hat einen Begrenzungsrahmen, der seine horizontale und vertikale Größe/Struktur definiert. Die Ausrichtung von Elementen kann also nur bis zur Genauigkeit dieser Kästen erfolgen. In diesem Sinne ist das Beste, was Sie tun können, wahrscheinlich:

\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

Dies speichert die Höhe von Fund einer \scriptstyleFußnotenmarkierung in \@tempdimabzw. \@tempdimb(dies sind Scratch-Register). Dann hebt es die Fußnotenmarkierung (angegeben durch \thefootnotemark) auf die richtige Höhe. Die Ausgabe ist aufgrund der „Boxing-Einschränkungen“ nicht wie erwartet. Hier ist ein minimales Beispiel, das die unterschiedlichen Ausgaben zeigt, nur als Beispiel. Es wurde auch aktualisiert, um das erste Zeichen der Fußnote zu erfassen (anstatt es auf das Zeichen zu fixieren F):

Bildbeschreibung hier eingeben

\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}

xstringerfasst das erste Zeichen der Fußnote (über \StrLeft) und speichert es in \fnfirstchar, währendetoolboxpatcht den entsprechenden Befehl, indem er die Extraktion an der richtigen Stelle einfügt (nachDer Fußnotentext wurde gelesen, aberVores wird gesetzt).

Zur Veranschaulichung zeigt die Einfassung des Fußnotenzeichens und Fdes Zeichens, dass sie auf der gleichen Höhe platziert sind (wie TeX es sieht):

Bildbeschreibung hier eingeben

Antwort2

Eine weniger technische, aber typografischere Möglichkeit wäre die Verwendung des PaketssuperiorsZitat aus dem Handbuch:

Das Standardverhalten von Fußnoten- und Endnotenmarkierungen in LaTeX besteht darin, die Zahl so zu drucken, als wäre sie ein mathematischer hochgestellter Buchstabe. In den meisten Fällen bedeutet dies, dass die Größe etwa 70 % der normalen Versalziffer beträgt und die Oberkante etwas über den Oberkanten der Großbuchstaben liegt. In vielen Fällen wird die hochgestellte Ziffer einfach in allen Dimensionen um etwa 70 % verkleinert, wodurch sie eher schmal, aber zu hoch erscheint. [...]

Alternativ kann man auch hochgestellte Ziffern verwenden – kleine Ziffern, die normalerweise 50 % bis 60 % der Höhe der Versalziffern haben, z. B. 1234567890. Normalerweise werden sie so gestaltet, dass die Oberkanten der Zahlen mit den Oberkanten der Großbuchstaben in der Schriftart übereinstimmen, manchmal jedoch etwas höher, entsprechend der Oberkantenhöhe.

\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}

Bildbeschreibung hier eingeben

Zusätzlich könnte man mit der Paketoption raised=<dim>die vertikale Position der hochgestellten Zahlen anpassen. Natürlich wäre die vertikale Position nicht von den folgenden Zeichen abhängig. (Aber was ist, wenn das folgende Token aohnehin ein kleines Zeichen oder eine Steuersequenz ist?)

Antwort3

Ich sah in Werners Lösung keine Notwendigkeit, ein Paket zu laden. BeideAbonnierenUndxstringsind relativ große Pakete.

\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}

verwandte Informationen