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
)取得し、 に格納します\fnfirstchar
。etoolbox
適切な場所に抽出を挿入することで適切なコマンドを修正します(後脚注のテキストは読みましたが、前にタイプセット中です。
例として、脚注マークと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}