我经常会遇到这样的情况:我想在块引用中添加脚注,以便对所引用的段落进行评论。
\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{lmodern,csquotes,lipsum}
\begin{document}
\lipsum*[1]
\blockquote{\lipsum*[1]...}\footnote{bla...}
\lipsum*[1]
\blockquote{\lipsum*[1]...\footnote{bla...}}
\lipsum*[1]
\end{document}
正如预期的那样,第一种安排行不通。脚注标记将最终出现在引文后面的段落开头(如在关闭\footnote
后调用的\blockquote
)。可以通过\footnote
在 内包含 来解决这个问题\blockquote
。
但是,一旦我们对块引用的外观进行某些更改,此修复将停止工作。考虑一下我的修改,我发现它比 LaTeX 默认设置更令人满意。(我已禁用与问题无关的修改部分。)
\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{lmodern,csquotes,lipsum}
\renewcommand{\mkblockquote}[4]{\enquote{#1}#2\ifterm{\relax}{#3}#4}
%
%\renewenvironment{quote}
%{\list{}{\itemindent=0em
% \listparindent=\parindent
% \leftmargin=\parindent
% \rightmargin=0em
% \partopsep=0em
% \topsep=0em
% }%
% \item\relax}
%{\endlist}
\begin{document}
\lipsum*[1]
\blockquote{\lipsum*[1]...}\footnote{bla...}
\lipsum*[1]
\end{document}
这种风格(以及其他特点)甚至为块引用保留了引号。这就是这\mkblockquote
句话的意思。问题是:我们如何才能让脚注标记出现在后结束标记,但仍在同一行?我尝试过类似的东西\nobreak
,但是,作为一个门外汉,在涉及低级事物时,无济于事。我也尝试过修改\mkblockquote
:人们可能会将脚注作为可选参数\blockquote
。但我尝试的所有方法仍然导致脚注标记被推入下一段。
更新
卡尔科勒建议为此目的使用重新定义的\mkcitation
。这确实会在正确的位置生成脚注标记,并提供了一个非常优雅的界面:\blockquote[footnote text]{quote text}
。但是,只要脚注文本中的某处有引用命令,它就会中断 - 这种情况经常发生......或者,在我的情况下,几乎每次都会发生。对于脚注中没有额外注释的简单块引用,我使用\blockc(!)quote[123]{xyz}{quote text}
,它会生成块引用、脚注标记和脚注中的引用。我想要的不仅是在脚注中有引用,还有额外的文本,这反过来可能包含更多的引用(参见图片,我也对其进行了更新)。
\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage[style=authoryear]{biblatex}
\usepackage{lmodern,csquotes,lipsum}
\renewcommand{\mkblockquote}[4]{\enquote{#1}#2\ifterm{\relax}{#3}#4}
\renewcommand{\mkcitation}[1]{\footnote{#1}}
\begin{document}
\lipsum*[1]
\blockquote[Says \cite[123]{xyz}. See also \cite[123]{xyz}.]{\lipsum*[1]...}
\lipsum*[1]
\end{document}
注意:使用postnote
of\blockcquote
不是
\blockcquote[123... footnote text, more citations]{xyz}{quote text}
一个选项。它也会中断,并抱怨嵌套引用命令。
答案1
请注意,该csquotes
包允许定义一个可选的引用参数,\blockquote
并且可以将其定义为脚注。
因此,你只需添加
\renewcommand{\mkcitation}[1]{\footnote{#1}}
在序言中
并使用
\blockquote[bla...]{\lipsum*[1]...}
代替
\blockquote{\lipsum*[1]...}\footnote{bla...}
完成 MWE
\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage{lmodern,csquotes,lipsum}
\renewcommand{\mkblockquote}[4]{\enquote{#1}#2\ifterm{\relax}{#3}#4}
\renewcommand{\mkcitation}[1]{\footnote{#1}}
\begin{document}
\lipsum*[1]
\blockquote[bla...]{\lipsum*[1]...}
\lipsum*[1]
\end{document}
输出
更新
您在更新中遇到的问题可以通过以下方式解决:
代替
\renewcommand{\mkcitation}[1]{\footnote{#1}}
只需
\renewcommand{\mkcitation}[1]{#1}
然后使用
\blockquote[\footnotemark]{\lipsum*[1]...}
\footnotetext{Says \cite[59]{companion}. See also \cite[59]{companion}.}
代替
\blockquote[Says \cite[123]{xyz}. See also \cite[123]{xyz}.]{\lipsum*[1]...}
这样,我们就将 和 分开了\footnotemark
,\footnotetext
问题就不会出现。
完成工作 MWE
\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage[style=authoryear]{biblatex}
\usepackage{lmodern,csquotes,lipsum}
\renewcommand{\mkblockquote}[4]{\enquote{#1}#2\ifterm{\relax}{#3}#4}
\renewcommand{\mkcitation}[1]{#1}
\addbibresource{biblatex-examples.bib}
\begin{document}
\lipsum*[1]
\blockquote[\footnotemark]{\lipsum*[1]...}
\footnotetext{Says \cite[59]{companion}. See also \cite[59]{companion}.}
\lipsum*[1]
\end{document}
输出
答案2
它会中断嵌套引用,因为它看到右方括号并认为这是手动引用的结尾。为了避免这种情况,请将整个脚注放在花括号中。然后您只需使用\renewcommand{\mkcitation}[1]{\footnote{#1}}
梅威瑟:
\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage[style=authoryear]{biblatex}
\usepackage{lmodern,csquotes,lipsum}
\addbibresource{biblatex-examples.bib}
\renewcommand{\mkcitation}[1]{\footnote{#1}}
\begin{document}
\lipsum*[1]
\blockquote[{\cite[3]{aksin}. See also \cite[2]{aksin}}]{\lipsum*[1]...}
\lipsum*[1]
\end{document}