biblatex:关闭方括号会导致参考书目/参考文献标题名称(标题)(章节名称或部分名称)出现问题

biblatex:关闭方括号会导致参考书目/参考文献标题名称(标题)(章节名称或部分名称)出现问题
  • 我想使用自定义名称为了标题参考书目/参考文献
  • 显然关闭方括号]会导致问题
  • 我使用语法\printbibliography[title = ...]
  • 用括住标题字符串{}似乎并不能解决问题。
  • title = Test [Test{]}看似有效。
  • 问题:为什么会这样?解决这个问题的最佳实践(预期方法)是什么?

\documentclass[]{article}

\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}

\begin{document}
\cite{westfahl:space}.

\printbibliography[title = Test [Test]] % "{Test [Test]}" does not work. "Test [Test{]}" does work.
\end{document}

在此处输入图片描述

答案1

由于@moewe说他目前没有太多时间,我很好奇,所以我做了一些调查。请注意,我确实不是为了进行深入研究,我阅读了很多源代码,所以我不确定这是否是唯一的问题,但简而言之,这就是发生的事情(很多跳过):

  1. key-val 解析器去掉第一对括号(这是有意为之,通常不会造成危害)。

  2. 键的值title(如果使用)将作为可选参数转发给\blx@head@bibliography宏。问题就在这里,所做的是(作为键<title>的参数title):

    \ifblank{<title>}
      {\csuse{blx@head@bibliography}}
      {\csuse{blx@head@bibliography}[<title>]}
    

    并且\blx@head@bibliography宏通过使用来抓取其可选参数而不检查括号是否匹配(几乎所有宏都是这样做的)\@protected@testopt,因此中的右括号会过早<title>停止参数抓取。\blx@head@bibliography

\blx@head@bibliography请注意,这是内部使用方式的一个错误。而不是这样做

\ifblank{<title>}
  {\csuse{blx@head@bibliography}}
  {\csuse{blx@head@bibliography}[<title>]}

biblatex应该做的

\ifblank{<title>}
  {\csuse{blx@head@bibliography}}
  {\csuse{blx@head@bibliography}[{<title>}]}

(请注意附加的括号)

相关内容