
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 F
und einer \scriptstyle
Fußnotenmarkierung in \@tempdima
bzw. \@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
):
\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}
xstring
erfasst das erste Zeichen der Fußnote (über \StrLeft
) und speichert es in \fnfirstchar
, währendetoolbox
patcht 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 F
des Zeichens, dass sie auf der gleichen Höhe platziert sind (wie TeX es sieht):
Antwort2
Eine weniger technische, aber typografischere Möglichkeit wäre die Verwendung des Paketssuperiors
Zitat 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}
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 a
ohnehin 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}