排版一个完整的引文,其标题以括号中的单词结尾

排版一个完整的引文,其标题以括号中的单词结尾

我正在使用 Biblatex,需要在文档文本中排版完整引文,因此我使用moewe 的\longfullcite命令。虽然它在大多数情况下都能正常工作,但它在处理 Biber/BibTeX 条目时会遇到麻烦,因为其中字段的最后一个单词用括号括起来(以强制大写)。在这些情况下,\longfullcite可能无法正确地将以下单词大写。请看以下示例:

\documentclass{article}

\usepackage{biblatex}
\makeatletter
\newcommand{\tempmaxup}[1]{\def\blx@maxcitenames{\blx@maxbibnames}#1}
\makeatother
\DeclareCiteCommand{\longfullcite}[\tempmaxup]
  {\usebibmacro{prenote}}
  {\usedriver
     {\DeclareNameAlias{sortname}{default}}
     {\thefield{entrytype}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\usepackage{filecontents}

\begin{filecontents}{test.bib}
@inproceedings{blow2015,
  author       = {Blow, Joe},
  title        = {{GNU} loves me},
  year         = 2015,
  booktitle    = {Proceedings of Some Conference},
}

@inproceedings{blow2016,
  author       = {Blow, Joe},
  title        = {I love {GNU}},
  year         = 2016,
  booktitle    = {Proceedings of Some Conference},
}
\end{filecontents}

\addbibresource{test.bib}

\begin{document}
\nocite{*}
\noindent
\longfullcite{blow2015}\\
\longfullcite{blow2016}
\printbibliography
\end{document}

输出如下:

上述文档的输出显示,第一个 \longfullcite 正确地将“In”大写,但第二个没有

请注意,两个\longfullcite命令生成的单词“In”的大小写不一致。相比之下,通过 生成的引文\printbibliography正确地将两个条目的“In”大写。

是什么导致了这种不一致?我该如何修复或解决它(最好通过更改定义\longfullcite而不是更改.bib文件)?

答案1

这是一个已知问题(https://github.com/plk/biblatex/issues/295) 并影响所有文内引文,尽管它可能只在\fullcite类似 - 的引文中才真正可见。不幸的是,找到正确解决方案的机会非常渺茫。biblatex的标点符号跟踪器会严重修改现有的空间因子,但在引文中这样做可能会对引文之外的文本产生不必要的连锁反应。

您必须\@在标题末尾添加一个大写字母。但如果您愿意,您可以在格式中自动完成此操作

\DeclareFieldFormat{title}{\mkbibemph{#1\@}}
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{\mkbibquote{#1\isdot\@}}
\DeclareFieldFormat
  [suppbook,suppcollection,suppperiodical]
  {title}{#1\@}

答案2

肮脏的黑客:

插入一些不可见且没有宽度的东西。我确信这会导致问题,但我不知道是哪些问题 :)

\documentclass{article}

\usepackage{biblatex}
\makeatletter
\newcommand{\tempmaxup}[1]{\def\blx@maxcitenames{\blx@maxbibnames}#1}
\makeatother
\DeclareCiteCommand{\longfullcite}[\tempmaxup]
  {\usebibmacro{prenote}}
  {\usedriver
     {\DeclareNameAlias{sortname}{default}}
     {\thefield{entrytype}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\usepackage{filecontents}

\begin{filecontents}{test.bib}
@inproceedings{blow2015,
  author       = {Blow, Joe},
  title        = {{GNU} loves me},
  year         = 2015,
  booktitle    = {Proceedings of Some Conference},
}

@inproceedings{blow2016,
  author       = {Blow, Joe},
  title        = {I love {GNU}\mbox{}},
  year         = 2016,
  booktitle    = {Proceedings of Some Conference},
}
\end{filecontents}

\addbibresource{test.bib}

\begin{document}
\nocite{*}
\noindent
\longfullcite{blow2015}\\
\longfullcite{blow2016}
\printbibliography
\end{document}

相关内容