csquotes + biblatex:使用 `\citefield` 时,`\blockquote` 行为异常

csquotes + biblatex:使用 `\citefield` 时,`\blockquote` 行为异常
  • 这似乎是关于这两个包的组合biblatexcsquotes
  • 我使用包\blockquote中的命令csquotes来设置包含多行(超过csquotes选项threshold)的引文。预期的行为是将引文打印在显示模式
  • 但是,当我使用下面 MWE 中所示的biblatex命令时,情况并非如此。当我尝试(additional ) 而不是 时,也会发生同样的情况。\citefield\blockcquotec\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}

根据需要添加两个区块引用

相关内容