文章を書くとき、私は引用全体に略語を導入するのが好きです。最初の例では、「これは (nbren12, et. al. 2012) に示されているとおり真実です (以下 NB12)」と書きます。その後の使用では、「この事実は真実です (NB12)」とだけ言います。これを bibtex (または biblatex) を使用して自動的に実装するにはどうすればよいですか?
これは似ているが同一ではないこの質問。
答え1
それは、マニュアルnatbib
3ページ目です。
コマンドを使用します:
\defcitealias{nbren12}{NB12}
\citet{}
その後は、従来の引用やに加えて\citep{}
、以下も使用できます。
\citetalias{nbren12}
% or
\citepalias{nbren12}
例
私はexample.tex
持っています:
\documentclass{article}
\usepackage{natbib}
\bibliographystyle{apalike}
\begin{document}
\defcitealias{jd14}{JD14}
In text \citet{jd14}. Or in brackets \citep[][hereafter JD14]{jd14}.
Now I cite it in text as \citetalias{jd14} and in brackets \citepalias{jd14}.
\bibliography{mybib}
\end{document}
そしてmybib.bib
私は持っています:
@article{jd14,
author={Doe, J. and Smith, J. and Bar, F.},
title={Some title},
journal={Some journal},
year={2014},
}
出力は次のようになります。
また、エイリアスを斜体などで表示したいが、ページ番号などは表示したくない場合は、次のように記述します\defcitealias{jd14}{{\itshape JD14}}
。
答え2
biblatex
shorthandintro
には、これを実行できる組み込みの標準マクロがあります。.bib
ファイルでは、フィールドを追加しshorthand
、そこに短い引用名を指定します。
@article{jd14,
author = {Doe, J. and Smith, J. and Bar, F.},
title = {Some title},
journal = {Some journal},
year = {2014},
shorthand = {JD14},
}
残っている唯一の作業は、このマクロが適切な場合にのみ呼び出されるようにすることです。 をすでに使用しているスタイルもありますがshorthandintro
、プレーンなauthoryear
およびauthortitle
スタイルでは使用されません。
authoryear
では、 を変更して、省略形の intro を使用する方法がよくわかります。 のデフォルトのcite
マクロauthoryear
は にありますauthoryear.cbx
。
省略形がない場合に使用される主な引用部分は、新しいマクロにアウトソースすることができます。longcite
\newbibmacro*{longcite}{%
\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
次に、実際の引用マクロが変更され、最初の引用では長い引用と短縮形の紹介文が印刷され (明らかに、紹介文は短縮形が実際に存在する場合にのみ印刷されます)、後続の引用では短縮形または長い (通常の) 引用文が印刷されます。
\renewbibmacro*{cite}{%
\ifciteseen
{\iffieldundef{shorthand}
{\usebibmacro{longcite}}
{\usebibmacro{cite:shorthand}}}
{\usebibmacro{longcite}
\usebibmacro{shorthandintro}}}
テストを使用できるようにするには\ifciteseen
、 を有効にする必要がありますcitetracker
(たとえば、 経由citetracker=true
)。
他の引用スタイルでは異なるcite
マクロが使用されるため、変更内容も異なる必要があります。また、この変更は現在では機能しません\textcite
。
ムウェ
\documentclass[british,a4paper]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage{filecontents}
\usepackage[backend=biber,style=authoryear,citetracker=true]{biblatex}
\begin{filecontents*}{\jobname.bib}
@article{jd14,
author = {Doe, J. and Smith, J. and Bar, F.},
title = {Some Title},
journal = {Some Journal},
year = {2014},
shorthand = {JD14},
}
@article{jd13,
author = {Doe, J. and Smith, J. and Bar, F.},
title = {No shorthand here},
journal = {Some Other Journal},
year = {2013},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\newbibmacro*{longcite}{%
\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}}
\renewbibmacro*{cite}{%
\ifciteseen
{\iffieldundef{shorthand}
{\usebibmacro{longcite}}
{\usebibmacro{cite:shorthand}}}
{\usebibmacro{longcite}
\usebibmacro{shorthandintro}}}
\begin{document}
\cite{jd14} again \cite{jd14} and one more time \cite{jd14}.
Just for comparison \cite{jd13}.
\printbibliography
\end{document}
<key>
「以降」ではなく「以降引用」を使いたい場合は<key>
、
\DefineBibliographyStrings{english}{citedas = {hereafter}}
前文に。
natbib
の cite-alias 関数を使用した Václav Pavlík のソリューションが気に入ったら、biblatex
のnatbib
互換モード (natbib=true
ロード時のオプションに渡すだけ) でも (私の知る限り) まったく同じ構文でこれらの機能が提供されていることを知って喜ぶでしょう。