![footnote 和 autocite=footnote 在 fnpct 下的行为不同](https://linux22.com/image/281228/footnote%20%E5%92%8C%20autocite%3Dfootnote%20%E5%9C%A8%20fnpct%20%E4%B8%8B%E7%9A%84%E8%A1%8C%E4%B8%BA%E4%B8%8D%E5%90%8C.png)
这听起来可能有点疯狂,但在使用fnpct
(after-punct-space
尤其是选项)和命令\autocite
from biblatex
(使用选项autocite=footnote
)时,我意识到脚注标记周围的间距的处理方式与命令不同\footnote
。这在 中几乎不明显,但在(from )british
中非常严重。奇怪的是,当是语言时,它似乎对选项没有反应,而有反应。french
babel
\footnote
after-punct-space
french
\autocite
我正在使用 v2.8abiblatex
和fnpct
v0.2k (2013/04/07)。
我尝试过的变体:
- 既无帮助
\frenchbsetup{FrenchFootnotes=false}
也无\usepackage[hang]{footmisc}
帮助 biblatex
根本不使用任何东西(footnote
仍然存在问题)
\footnote
如果我可以重新定义基本版本,我会很满意autocite=footnote
,但我还不够精明,不知道如何挖掘这些信息。
下面是一个代码示例,已调整为获得最佳图形效果(例如,正确的对齐有助于可视化事物):
\documentclass[french,12pt]{article}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{fnpct}
\usepackage[babel]{csquotes}
\usepackage[autocite=footnote,autopunct=false]{biblatex}
\AdaptNoteOptNoMult\autocite
\renewcommand{\thempfootnote}{\arabic{mpfootnote}}
\begin{document}
\begin{minipage}{6cm}
\emph{Without \texttt{after-punct-space}:}
\begin{flushright}
Here I'm using footnote\footnote[2]{Check!}.
\setcounter{mpfootnote}{1}
And here\ldots\ autocite\autocite{nokeyneeded}.
\end{flushright}
\end{minipage}
\vspace*{1cm}
\setfnpct{after-punct-space=-1em}
\begin{minipage}{6cm}
\emph{With \texttt{after-punct-space}:}
\begin{flushright}
Here I'm using footnote\footnote[2]{Check!}.
\setcounter{mpfootnote}{1}
And here\ldots\ autocite\autocite{nokeyneeded}.
\end{flushright}
\end{minipage}
\end{document}
[编辑以添加fnpct
软件包版本]
答案1
您发现了两个不同且不相关的问题:
法语的语言定义文件
frenchb.ldf
在文档开始处做出以下定义:\let\@footnotemarkORI\@footnotemark \def\@footnotemarkFB{\leavevmode\unskip\unkern \,\@footnotemarkORI}%
这将禁用
fnpct
自身的适配。由于fnpct
有办法在不同情况下设置脚注标记周围的所有空格,因此 中的定义frenchb-ldf
实际上并不需要,并且可以在开始文档后再次恢复:\begin{document} \makeatletter \let\@footnotemark\@footnotemarkORI \makeatother
的问题
\autocite
则完全不同。在这里,fnpct
的机制会反击:\auocite
最终会插入\footnote
也已被 重新定义的fnpct
。 的这种使用\footnote
不会找到尾随标点符号,并假设它位于单词之后。这就是为什么它会插入 ,before-footnote-space
这就是您所看到的。以下示例对此进行了放大:\documentclass[12pt]{article} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{fnpct} \usepackage[autocite=footnote,autopunct=false]{biblatex} \renewcommand{\thempfootnote}{\arabic{mpfootnote}} \AdaptNoteOptNoMult\autocite \begin{document} \begin{minipage}{6cm} \begin{flushright} Here I'm using footnote\footnote[2]{Check!}.\par \setcounter{mpfootnote}{1} And here\ldots\ autocite\autocite{nokeyneeded}.\par \setcounter{mpfootnote}{1} \setfnpct{before-footnote-space=.5em} And here\ldots\ autocite\autocite{nokeyneeded}.\par \end{flushright} \end{minipage} \end{document}
除了设置之外没有其他简单的解决方法
\setfnpct{before-footnote-space=0pt}
我肯定会修复问题 2 fnpct
(我已经在开发版本中修复了它)。我可能还会撤消对何时加载frenchb.ldf
的重新定义,而是在法语为主要文档语言时相应地调整。\@footnotemark
fnpct
before-footnote-space
fnpct
这两个问题已在v0.4a 2013/12/23中修复:
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{fnpct}[2013/12/23]
\usepackage[autocite=footnote,autopunct=false]{biblatex}
\renewcommand{\thempfootnote}{\arabic{mpfootnote}}
\AdaptNoteOptNoMult\autocite
\begin{document}
\begin{minipage}{6cm}
\begin{flushright}
Here I'm using footnote\footnote[2]{Check!}.\par
\setcounter{mpfootnote}{1}
And here\ldots\ autocite\autocite{nokeyneeded}.\par
\setcounter{mpfootnote}{1}
Text\footnote{foo} text
\end{flushright}
\end{minipage}
\end{document}