这个问题导致了一个新的方案的出现:
fnpct
跟进我的问题是关于标点符号后的脚注符号的字距,我想知道是否有办法自动实现脚注标记在逗号或句号上的字距调整,或者使用比我在此处提供的更好的宏。我将重复我的结果和我建议的宏。
在这里,脚注标记向左移动了不到标点符号宽度的三分之一,而普通脚注标记(即在任何其他符号或字母之后的脚注标记)向右移动了相同的量,灵感来自http://www.read.seas.harvard.edu/~kohler/latex.html并显示在我的评论:
这是通过以下代码实现的:
\documentclass{article}
% URW Classico is a font that makes the issue apparent
\renewcommand{\sfdefault}{uop}
\renewcommand{\familydefault}{\sfdefault}
% define punctuation-aware footnote macro
\let\origfootnote\footnote
\renewcommand{\footnote}[1]{\kern.06em\origfootnote{#1}}
\newcommand{\punctfootnote}[1]{\kern-.06em\origfootnote{#1}}
% define a very small
\setlength{\textwidth}{150pt}
\setlength{\textheight}{5\baselineskip}
\begin{document}
\noindent The three little pigs built their houses out of
straw,\punctfootnote{not to be confused with hay}
sticks\footnote{or lumber according to some sources} and
bricks.\punctfootnote{probably fired clay bricks}
\end{document}
对我来说,使用 LuaLaTeX 是一种选择。我也知道关于自动字距调整的现有问题但我对如何将那里的 LuaLaTeX 代码应用于我的问题了解甚少。
答案1
编辑-使用新包:
随附包装fnpct
现在可用只需使用\usepackage{fnpct}
并确保标点符号跟随脚注:
\documentclass{article}
% for demonstration purposes only: make the page small!
\usepackage[
paperwidth=.5\textwidth,
paperheight=15\baselineskip,
margin=5pt,
bottom=1.5cm]{geometry}
\usepackage{fnpct}
\begin{document}
\noindent The three little pigs built their houses
out of straw\footnote{not to be confused with hay},
sticks\footnote{or lumber according to some sources}
and bricks\footnote{probably fired clay bricks}.
% without `fnpct' for comparison:
\setfnpct{dont-mess-around}\setcounter{footnote}{0}
\noindent The three little pigs built their houses
out of straw\footnote{not to be confused with hay},
sticks\footnote{or lumber according to some sources}
and bricks\footnote{probably fired clay bricks}.
\end{document}
原答案:
下面的代码是使用 的尝试expl3
。它使用你的答案的价值.06em
对于您的相关问题:如果后面有点或逗号则跳回,否则插入.06em
。
\documentclass{article}
\renewcommand\familydefault{\sfdefault}
\usepackage{xparse}
\ExplSyntaxOn
% save definition of \footnote
\cs_new_eq:NN \fnpct_orig_footnote:w \footnote
% redefine \footnote
\RenewDocumentCommand \footnote { om }
{ \fnpct_dot_or_comma:nn { #1 } { #2 } }
% internal footnote function:
\cs_new:Npn \fnpct_dot_or_comma:nn #1#2
{
% if a dot follows remove it, insert dot, skip back
% and then insert footnote
\peek_meaning_remove:NTF .
{
. \skip_horizontal:n { -.06em }
\IfNoValueTF { #1 }
{ \fnpct_orig_footnote:w { #2 } }
{ \fnpct_orig_footnote:w [ #1 ] { #2 } }
}
{
% else do the same with comma
\peek_meaning_remove:NTF ,
{
, \skip_horizontal:n { -.06em }
\IfNoValueTF { #1 }
{ \fnpct_orig_footnote:w { #2 } }
{ \fnpct_orig_footnote:w [ #1 ] { #2 } }
}
{
% else insert space and then footnote
\skip_horizontal:n { .06em }
\IfNoValueTF { #1 }
{ \fnpct_orig_footnote:w { #2 } }
{ \fnpct_orig_footnote:w [ #1 ] { #2 } }
}
}
}
\ExplSyntaxOff
\setlength\textwidth{150pt}
\setlength\textheight{5\baselineskip}
\begin{document}
\noindent The three little pigs built their houses
out of straw\footnote{not to be confused with hay},
sticks\footnote{or lumber according to some sources} and
bricks\footnote{probably fired clay bricks}.
\end{document}
答案2
为了实现你的目标,你似乎必须侵入命令\footnote
来检查前一个字符。我无法向你展示可行的 tex-code,但在包中脚杂
罗宾·费尔贝恩斯已编写一个名为 的选项multiple
。该选项在多个脚注标记之间添加逗号,以防您在同一个位置有多个脚注。这意味着您必须知道前一个字符是脚注标记。也许您可以根据自己的目的调整代码。
该代码在手册的第 6.1 节下进行了注释,并且非常先进...我不是 TeX 大师,无法解码代码。
您的链接https://tex.stackexchange.com/a/10457/9632回答了这个问题:在 LaTeX 中是否可以调整两个字符对的字距。LuaLaTeX
这fontspec
似乎是最简单的解决方案。在这个答案中;https://tex.stackexchange.com/a/53594/9632;您会发现一些luacode
可以即时调整字距的方法。
另一方面,当您进行最后的校对时,手动操作可能会减少工作量(但不那么有趣)。