脚注マークを脚注テキストの上部に揃える方法はありますか?

脚注マークを脚注テキストの上部に揃える方法はありますか?

MWE は次のとおりです。

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

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

脚注マークの上部を脚注テキストの上部に揃えるにはどうすればよいですか (MWE では、「1」の上部を「F」と揃えたいです)。

新しいエラー: Werner の (優れた) ソリューションを実装する際に、脚注テキストに「\」を含むものを追加しようとしたときにエラーが発生しました。

観察する:

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

答え1

これに対する簡単な答えは、「正確な配置」が常に可能であるとは限らないということです。なぜでしょうか? TeX は文字ではなくボックスで動作することに注意してください。各文字には、水平方向と垂直方向のサイズ/構造を定義する境界ボックスがあります。したがって、要素の配置は、これらのボックスの精度までしか実行できません。その意味で、おそらく最善の方法は次のとおりです。

\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

これは、 の高さF\scriptstyle脚注マークをそれぞれ\@tempdimaとに格納します\@tempdimb(これらはスクラッチ レジスタです)。次に、脚注マーク ( によって指定\thefootnotemark) を正しい高さまで上げます。「ボックス化の制約」のため、出力は期待どおりではありません。以下は、さまざまな出力を示す最小限の例です (単なる例として)。また、脚注の最初の文字をキャプチャするように更新されます (文字 に固定するのではなく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は脚注の最初の文字を( を介して\StrLeft)取得し、 に格納します\fnfirstcharetoolbox適切な場所に抽出を挿入することで適切なコマンドを修正します(脚注のテキストは読みましたが、前にタイプセット中です。

例として、脚注マークとF文字をボックスで囲むと、それらが同じ高さに配置されていることがわかります (TeX から見た場合)。

ここに画像の説明を入力してください

答え2

技術的ではないが、よりタイポグラフィ的な方法は、パッケージを使用することです。superiorsマニュアルから引用:

LaTeX の脚注マーカーと文末脚注マーカーのデフォルトの動作は、数字を数学的な上付き文字のように印刷することです。ほとんどの場合、これはサイズが通常の線引き数字の約 70% で、上端が大文字の上端より少し上になることを意味します。多くの場合、上付き数字はすべての寸法で約 70% 縮小されるだけなので、高さは高すぎますが、かなり小さく見えます。[...]

代わりに、上付き数字、つまり通常は 1234567890 のような、並んだ数字の高さの 50% から 60% の小さな数字を使用することもできます。一般的に、上付き数字は、数字の上部がフォントの大文字の上部と揃うように設計されていますが、アセンダの高さに対応して、少し高くなることもあります。

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

ここに画像の説明を入力してください

さらに、パッケージ オプションを使用すると、raised=<dim>上付き数字の垂直位置を調整できます。もちろん、垂直位置は後続の文字に依存しません。(ただし、後続のトークンが小さい文字aまたは制御シーケンスの場合はどうなるでしょうか?)

答え3

ヴェルナーのソリューションではパッケージをロードする必要性を感じませんでした。ツールボックスそしてx文字列比較的大きなパッケージです。

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

関連情報