使用 ACS 样式更改文本引用

使用 ACS 样式更改文本引用

我正在撰写一份科学报告,遇到以下问题:

我想在参考文献列表中使用 ACS 参考样式,但不在正文中使用。最好使用以下格式,例如

(姓氏,1990 年)

在文本中。

目前 biblatex 与以下输入一起使用

\usepackage[
backend=biber,
style=chem-acs,
sorting=nty
]{biblatex}

它在文本中显示为 [1],但我的主管想要另一种样式。我的结论是,该样式覆盖了我迄今为止所做的其他更改。我尝试了 natbib,但对 Latex 的总体了解有限,但当它工作时,它确实会变得很好。

答案1

chem-acs本质上是一种数字样式。将其与作者年份引用不加任何更改地组合会导致奇怪的结果。

biblatex允许您分别选择参考书目和引用样式。因此,

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[
  backend=biber,
  bibstyle=chem-acs,
  citestyle=authoryear,
  sorting=nyt,
]{biblatex}

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson}

\printbibliography
\end{document}

原则上可行,但会产生不良结果

Lorem(Sigfridsson 和 Ryde 1998)

参考书目中的数字与文本中的任何内容都没有任何联系,实际上将焦点从名称上转移开了(您需要使用名称来唯一地标识引用)。

我们可以通过重新定义书目环境来摆脱这个数字。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[
  backend=biber,
  bibstyle=chem-acs,
  citestyle=authoryear,
  sorting=nyt,
]{biblatex}

\defbibenvironment{bibliography}
  {\list
     {}
     {\setlength{\leftmargin}{\bibhang}%
      \setlength{\itemindent}{-\leftmargin}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}}
  {\endlist}
  {\item}

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson}
ipsum \autocite{worman}
dolo \autocite{geer}

\printbibliography
\end{document}

Lorem(Sigfridsson 和 Ryde 1998) ipsum(Worman 2002) dolo(Geer 1985)

但这凸显了这种组合的另一个次优之处:引文通过作者和年份来标识。年份隐藏在条目末尾,当我们扫描条目时不会立即引起我们的注意(除非是@articles,其中年份是粗体)。因此,参考书目样式不适合作者-年份引文。

标准authoryear风格可以产生更加令人满意的结果。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

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

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson}
ipsum \autocite{worman}
dolo \autocite{geer}

\printbibliography
\end{document}

Sigfridsson, Emma 和 Ulf Ryde (1998)。《从静电势和矩推导原子电荷的方法比较》。《计算化学杂志》19.4,第 377-395 页。doi:10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P。

答案2

为了满足您的要求,您可以简单地定义以下命令:

\newcommand{\cited}[1]{(\citeauthor{#1}, \citeyear{#1})}

但是,当您这样做时,单击年份不再会指向参考书目部分中的相应参考。所以我们需要更改 citeyear 命令。(此具体解决方案在此处给出:让 hyperref 与 biblatex 中的 \citeyear 和 \citeyearpar 协同工作

有关更多信息,请参阅此 pdf 的第 184 页: https://ftp.yz.yamagata-u.ac.jp/pub/CTAN/macros/latex/contrib/biblatex/doc/biblatex.pdf

片段如下:

% Basic settings
\documentclass[12pt, a4paper]{article}
\usepackage[english]{babel}

% Bibliography management
\usepackage[backend=biber, style=chem-acs]{biblatex}
\usepackage[hidelinks]{hyperref}
\addbibresource{References.bib}

% Redefining citeyear
\DeclareCiteCommand{\citeyear}
    {}
    {\bibhyperref{\printfield{year}}}
    {\multicitedelim}
    {}

% The command
\newcommand{\cited}[1]{(\citeauthor{#1}, \citeyear{#1})}

\begin{document}
\section*{Introduction} 
Lorem ipsum \cited{example} 
\printbibliography[heading=bibintoc,title={Bibliography}]
\end{document}

相关内容