参考文献中文章标题问号后无逗号

参考文献中文章标题问号后无逗号

我复制了《金融杂志》的参考标准,当我的文章标题带有问号时,参考文献后面也会出现逗号。但是,如果有问号,我会尝试删除逗号。

这里我创建了一个简单的示例:

@article{examplesource,
  title={Title of article with question mark?},
  author={LastName1, FirstName1 and LastName2, FirstName2 and LastName3, FirstName3},
  journal={Journal of Finance},
  volume={40},
  number={1},
  pages={3--73},
  year={2005}}
\documentclass{article}

\usepackage[style=ext-authoryear, backend=biber, giveninits=true, uniquelist = false, uniquename=init, isbn=false, maxcitenames=3, dashed=false, maxbibnames=999, doi=false, url=false,giveninits=false]{biblatex}

%Bibliography file with sources
\addbibresource{biblatex-examples.bib}

%Indent of following references rows
\setlength{\bibhang}{15pt}

\renewcommand*{\labelnamepunct}{\addspace}

\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{#1}

\DeclareFieldFormat{titlecase}{\MakeSentenceCase*{#1}}

%Article definition
\renewbibmacro*{in:}{%
  \ifentrytype{article}
    {\setunit{\addcomma\space}}
    {\printtext{\bibstring{in}\intitlepunct}}}

%Title of Journal    
\DeclareFieldFormat{journaltitlecase}{#1}
\renewbibmacro*{journal}{%
  \ifboolexpr{
    test {\iffieldundef{journaltitle}}and
    test {\iffieldundef{journalsubtitle}}}{}
    {\printtext[journaltitle]{%
       \printfield[journaltitlecase]{journaltitle}%
       \setunit{\subtitlepunct}%
       \printfield[journaltitlecase]{journalsubtitle}}}}

%Article number, volume & page
\renewbibmacro*{volume+number+eid}{%
  \printfield{volume}%
  \setunit{\addcomma\space}%
  \printfield{eid}}
\DeclareFieldFormat[article,periodical]{volume}{{#1}}
\DeclareFieldFormat{pages}{#1}

%Parentheses instead of commas in text 
\UndeclareInnerCiteDelims{parencite}
\DeclareInnerCiteDelims{parencite}{(}{)}

%Commas instead of parentheses for years in references
\DeclareFieldFormat{biblabeldate}{#1}
\DeclareDelimFormat[bib]{nameyeardelim}{\addcomma\space}

\ExecuteBibliographyOptions{innamebeforetitle=true} \DeclareDelimFormat[bib]{nametitledelim}{\addcomma\space}

\begin{document}
\textcite{examplesource} lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.\\

\printbibliography
\end{document}

问号后面有一个逗号,但我只想在标题包含问号的情况下删除逗号。

非常感谢您的建议!

答案1

总结

您需要(1)\addcomma在宏中使用in:- 正如您已经在做的那样 - 并且(2)教导\addcomma不要在后面打印逗号?,这可以通过来完成\DeclarePunctuationPairs{comma}{*!}


这里有两种方法,一种是全局方法,一种是局部方法。两者都基于特征\DeclarePunctuationPairs§4.7.5文档)。这通常biblatex用于定制\addcomma和 - 命令的行为。\add

\addcomma用于打印逗号,除非它跟随肯定标点符号。有例外, 尽管:

缩写点、感叹号和问号后允许使用逗号。

为 - 命令指定此类例外列表的方式\add是通过,其中\DeclarePunctuationPairs的默认设置为:\addcommabiblatex.def

\DeclarePunctuationPairs{comma}{*!?}

其中*代表缩写点。(在美国本地化中,这是列表中唯一的符号,表示问号或感叹号后没有逗号。)

全球方法

如果我们从列表中删除问号,我们实际上就是biblatex禁止曾经在问号后添加逗号。这是更加广泛比您要求的更多,因为它会影响所有条目类型(您正在寻找article)并且可能影响所有字段分隔符(不仅仅是在title和之间journal)。

\AtBeginBibliography{\DeclarePunctuationPairs{comma}{*!}}

请注意,我选择在参考书目开头激活此设置,以免影响主文档。(Fi,The essay \citetitle{my-article}, however, appeared...无论问号如何,“however”周围的两个逗号都很重要。“The essay “Was ist Aufklärung?” however, appeared” 之类的内容是不正确的。)

优点:明确的实施。

缺点:这比你要求的要广泛——尽管它可能符合你想要实现的精神,这就是我选择展示它的原因。

本地方法

我们可以编辑 bibmacroin:来重新定义局部行为\addcomma,在单个条目的范围内,以便只影响期刊文章的标题。

\renewbibmacro*{in:}{%
  \ifentrytype{article}
    {\DeclarePunctuationPairs{comma}{*!}        % if article, no comma after "?"
    \setunit{\addcomma\space}}
    {\printtext{\bibstring{in}\intitlepunct}}}

这满足了您的特定要求,它只影响相关的条目类型和字段,不会影响主文档。而且,您始终可以将该方法扩展到其他条目类型(“incollection”?)和标点符号(感叹号?)。

优点:回答您的具体问题。

缺点:有点粗制滥造,不够优雅。我看不出这个解决方案中存在任何技术问题,但更专业的用户可能会发现它存在缺陷。

结果:

原始发帖示例

这是一个简单的 MWE:

\documentclass{article}

\begin{filecontents}{questionable-articles.bib}
@article{kant-kopf,
  title={Versuch über die Krankheiten des Kopfes},
  author={Kant, Immanuel},
  journal={Königsbergsche Gelehrte und Politische Zeitungen},
  pages={13-27},
  year={1764}}
@article{kant-aufklaerung,
  title={Beantwortung der Frage: Was ist Aufklärung?},
  author={Kant, Immanuel},
  journal={Berlinische Monatsschrift},
  pages={481-494},
  year={1784}}
\end{filecontents}

\usepackage{biblatex}

\addbibresource{questionable-articles.bib}

\renewbibmacro*{in:}{%
  \ifentrytype{article}
    {\DeclarePunctuationPairs{comma}{*!}        % if article, no comma after "?"
    \setunit{\addcomma\space}}
    {\printtext{\bibstring{in}\intitlepunct}}}
    
\begin{document}
\nocite{*}
\printbibliography
\end{document}

参考文献-康德

相关内容