![csquotes + biblatex:使用 `\citefield` 时,`\blockquote` 行为异常](https://linux22.com/image/446309/csquotes%20%2B%20biblatex%EF%BC%9A%E4%BD%BF%E7%94%A8%20%60%5Ccitefield%60%20%E6%97%B6%EF%BC%8C%60%5Cblockquote%60%20%E8%A1%8C%E4%B8%BA%E5%BC%82%E5%B8%B8.png)
- 这似乎是关于这两个包的组合
biblatex
和csquotes
。 - 我使用包
\blockquote
中的命令csquotes
来设置包含多行(超过csquotes
选项threshold
)的引文。预期的行为是将引文打印在显示模式。 - 但是,当我使用下面 MWE 中所示的
biblatex
命令时,情况并非如此。当我尝试(additional ) 而不是 时,也会发生同样的情况。\citefield
\blockcquote
c
\blockquote
- 问题:为什么在命令内部使用
\blockquote
时无法识别显示模式的需要?\citefield
\blockquote
\documentclass{article}
\usepackage[]{biblatex}
\addbibresource{\jobname.bib}
\usepackage[threshold = 3, thresholdtype = lines]{csquotes} % "3" and "lines" is the default anyway.
\usepackage{blindtext}
% https://tex.meta.stackexchange.com/questions/4407
\begin{filecontents}{\jobname.bib}
@book{key,
author = {Author, A.},
year = {2001},
title = {Title},
publisher = {Publisher},
abstract = {\blindtext},
}
\end{filecontents}
\begin{document}
\section{\texttt{\textbackslash citefield\{key\}\{abstract\}}}
\blockquote[][]{\citefield{key}{abstract}}
\section{\texttt{\textbackslash blindtext}}
\blockquote[][]{\blindtext}
\printbibliography
\end{document}
(摘自csquotes
手动的,版本 v5.2l,2021-02-22)
答案1
biblatex
在测量 blockquote 内容期间禁用其引用命令。这样可以避免biblatex
执行 cite 命令一次测量内容然后排版所产生的所有相关副作用。(例如,您最终会在排版的 blockquote 中得到不受欢迎的“ibidem”引用。其他计数和跟踪功能将关闭。)
如果您确实需要测量 blockquote 中生成的文本biblatex
,您可以重新启用其命令以执行测量步骤。但请记住,如果您\cite
在 blockquote 中使用更多上下文相关命令,事情可能会变得非常糟糕。(请参见第三部分中的示例,其中输出中的“ibid.”使其看起来像是sigfridsson
再次被引用,即使我们实际上引用了key
。)
\documentclass{article}
\usepackage[style=authoryear-ibid]{biblatex}
\usepackage[threshold = 3, thresholdtype = lines]{csquotes}
\usepackage{blindtext}
\makeatletter
\AtBeginDocument{%
\let\real@blx@thecheckpunct\blx@thecheckpunct
\gappto\blockquote@parsehook{\let\blx@thecheckpunct\real@blx@thecheckpunct}}
\makeatother
\begin{filecontents}{\jobname.bib}
@book{key,
author = {Author, A.},
year = {2001},
title = {Title},
publisher = {Publisher},
abstract = {\blindtext},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
\section{\texttt{\textbackslash citefield\{key\}\{abstract\}}}
\blockquote[][]{\citefield{key}{abstract}}
\section{\texttt{\textbackslash blindtext}}
\blockquote[][]{\blindtext}
\section{Ooops}
First \autocite{key} and \autocite{sigfridsson}
\blockquote[][]{Lorem ipsum \autocite{key}}
\printbibliography
\end{document}