BibTex の引用のカスタム略語

BibTex の引用のカスタム略語

文章を書くとき、私は引用全体に略語を導入するのが好きです。最初の例では、「これは (nbren12, et. al. 2012) に示されているとおり真実です (以下 NB12)」と書きます。その後の使用では、「この事実は真実です (NB12)」とだけ言います。これを bibtex (または biblatex) を使用して自動的に実装するにはどうすればよいですか?

これは似ているが同一ではないこの質問

答え1

それは、マニュアルnatbib3ページ目です。

コマンドを使用します:

\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

biblatexshorthandintroには、これを実行できる組み込みの標準マクロがあります。.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 のソリューションが気に入ったら、biblatexnatbib互換モード (natbib=trueロード時のオプションに渡すだけ) でも (私の知る限り) まったく同じ構文でこれらの機能が提供されていることを知って喜ぶでしょう。

関連情報