括弧で囲まれた単語でタイトルが終わる完全な引用をタイプセットする

括弧で囲まれた単語でタイトルが終わる完全な引用をタイプセットする

私はBiblatexを使っていて、文書のテキストに完全な引用をタイプセットする必要があるので、モーエの\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」が正しく大文字になっているが、2番目の\longfullciteでは正しく大文字になっていないことが分かる。

2 つの\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}

関連情報