如何修改参考书目样式以将参考书目中的标题括在引号中?

如何修改参考书目样式以将参考书目中的标题括在引号中?

"我的导师希望我在我的论文参考书目中列出所有论文、书籍和文章的标题。

我正在使用参考书目natbib样式plainnat,但不确定如何执行此操作。我不是在问如何做或者在标题中显示引文,我想让标题显示"在它周围,并保存大写字母。我想我可以浏览并手动修改 .bib 文件...

这是一个有效的例子:

\begin{filecontents}{mybib.bib}                 
@Article{Hart,
author = {P.E. Hart, N.J. Nilsson, B. Raphael},
title = {Correction to a Formal Basis for the Heuristic Determination of Minimum Cost Paths },
journal = {SIGART Newsletter 37},
year = {1972},
pages = {28-29}
}       
@Article{Hart2,
author = {P.E. Hart, N.J. Nilsson, B. Raphael},
title = { {``Correction to a Formal Basis for the Heuristic Determination of Minimum Cost Paths''}  },
journal = {SIGART Newsletter 37},
year = {1972},
pages = {28-29}
}
\end{filecontents}  

\documentclass{report}
\usepackage[numbers,square]{natbib}
\begin{document}
\bibliographystyle{plainnat}

    I don't want it to look like this reference \cite{Hart}

    I want it to look like this \cite{Hart2}

\bibliography{mybib}


\end{document}

有没有办法轻松做到这一点?如果没有,我总是可以按照我在第二个参考中所做的那样来解决这个问题。

从阅读本文档对我来说没有什么比这更突出的了?

答案1

无论如何,不​​要.bib通过添加引号来修改文件。这会给你带来无穷的麻烦。以下是两种解决方案。

使用makebst

您可以使用makebst程序为自己生成一个新.bst文件。为此,您可以打开命令行窗口并输入:

latex makebst

这将引导您浏览一系列选择菜单,其中包括以下内容:

<many choices before>

<<TITLE OF ARTICLE:
(*) Title plain with no special font
(i) Title italic (\em)
(q) Title and punctuation in single quotes (`Title,' ..)
(d) Title and punctuation in double quotes (``Title,'' ..)
(g) Title and punctuation in guillemets (<<Title,>> ..)
(x) Title in single quotes (`Title', ..)
(y) Title in double quotes (``Title'', ..)
(z) Title in guillemets (<<Title>>, ..)
  Select:

\ans=d
  You have selected: Title and punctuation in double quotes

>>TITLE OF ARTICLE:

<<COLLECTION/PROCEEDINGS TITLES (if quoted title)
(*) Quote collection and proceedings titles too
(x) Collection and proceedings titles not in quotes 
  Select:

\ans=
  You have selected: Quote collection and proceedings titles

<many choices after>

然后,您只需将这个新.bst文件用于您的论文即可。您可以将其放在与论文主文件相同的文件夹中.tex,也可以将其放在本地texmf文件夹中(在 TeXLive 系统上,它应该放在<path-to-local-texmf>/texmf/bib/bst.

新建一个用于引用的.bst文件csquotes

如果您愿意编辑自己的副本,那么可以尝试plainnat.bst以下方法,它使用csquotes包来执行引用。这可以正确处理标点符号,并且还允许您根据需要轻松地将单引号更改为双引号。虽然这确实需要一些工作,但可能比逐步完成所有makebst选择花费的时间更少(特别是如果您不知道每个选择都在问什么)。

plainnat.bst首先,在文件的同一文件夹中复制.tex并重命名(例如plainnat-csquotes.bst)。

现在对该文件进行以下更改/添加:

首先,我们添加一个format.atitle类似于format.btitle第 432 行的函数plainnat.bst

FUNCTION {format.atitle}
{ title enquote
}

接下来,我们添加一个enquote类似于emphasize207 行的函数plainnat.bst。请注意,这使用了包\textquote中的宏csquotes,因此此.bst文件将需要加载该包。我们使用\textquote宏而不是更通用的\enquote宏,以便我们可以重新定义它以根据美国标准正确放置标点符号(标点符号始终在引号内)。

FUNCTION {enquote}
{ duplicate$ empty$
    {pop$ "" }
    {"\textquote{" swap$ * "}" * }
    if$
}

最后,我们需要将任何需要在其标题周围加引号的条目类型更改为使用函数format.atitle而不是函数format.title。在我看来,这应该包括(为了保持一致性)articleincollectioninproceedingstechreportunpublished条目类型。如果您搜索文件,.bst您会发现每个条目都有一个函数。以下是该article函数的示例:(更改之前:)

FUNCTION {article}
{ output.bibitem
  format.authors "author" output.check
  author format.key output
  new.block
  format.title "title" output.check
  new.block
  crossref missing$
    { journal emphasize "journal" output.check
      eid empty$
        { format.vol.num.pages output }
        { format.vol.num.eid output }
      if$
      format.date "year" output.check
    }
    { format.article.crossref output.nonnull
      eid empty$
        { format.pages output }
        { format.eid output }
      if$
    }
  if$
  format.issn output
  format.doi output
  format.url output
  new.block
  note output
  fin.entry
}

我们现在改变路线

format.title "title" output.check

到:

format.atitle "title" output.check

对上面列出的每个其他条目类型执行此操作。

现在您已经有了一个csquotes感知.bst文件。要使用它,您只需将以下几行添加到您的序言中:

\usepackage{csquotes}
\bibliographystyle{plainnat-csquotes}

为了实现相对于引号的标点符号的正确放置,我们需要添加以下额外的行:

\renewcommand{\mktextquote}[6]{#1#2#4#5#3#6}

这会将标点符号放在引号内。

改变书名的格式

你的导师要求书名也使用引号。这是一种非常不正统的风格,我完全不推荐,但如果这是他想要的,那么很容易做到。只需找到该format.btitle函数并将其从以下内容更改为:

FUNCTION {format.btitle}
    { title emphasize
    }

FUNCTION {format.btitle}
    { title enquote
    }

答案2

使用 biblatex 更加直接。

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

- 例如。

如果您选择这条路线,大概您会使用这样的选项调用 biblatex,以便您可以继续使用 natbib 引用命令:

\usepackage[style=apa,
            natbib,
            backend=biber]{biblatex}

(请注意,关于使用 biblatex-apa申请。)


这是介绍另一个的 MWE诡计以保留大小写。删除句点分隔符更加复杂,我不确定是否真的需要/想要这样做。

在此处输入图片描述

\documentclass{article}
\usepackage[english, american]{babel}
\usepackage{filecontents}

\usepackage[style=apa,
            natbib,
            backend=biber]{biblatex}

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

\DeclareFieldFormat{apacase}{#1}

\DeclareLanguageMapping{american}{american-apa}

\begin{filecontents}{references.bib}
@book{sloterdijk2013change,
  title={You Must Change Your Life},
  author={Sloterdijk, P.},
  publisher={Polity Press},
  year={2013}
}
@Article{Hart,
author = {P.E. Hart, N.J. Nilsson, B. Raphael},
title = {Correction to a Formal Basis for the Heuristic Determination of Minimum Cost Paths },
journal = {SIGART Newsletter 37},
year = {1972},
pages = {28-29}
}
\end{filecontents}

\bibliography{references.bib}

\begin{document}
\noindent \cite{Hart}.

\noindent Cf. Sloterdijk \citeyear[(pp. 84--85)]{sloterdijk2013change}.

\printbibliography
\end{document}

相关内容