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

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일반 authoryearauthortitle스타일은 사용하지 않습니다.

authoryear우리는 단축형 소개를 사용하도록 어떻게 수정하는지 잘 살펴보겠습니다 . 의 기본 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을 활성화해야 합니다 .citetrackercitetracker=true

다른 인용 스타일은 다른 cite매크로를 사용하므로 수정 사항도 달라야 합니다. 또한 이 수정 사항은 현재 에서 작동하지 않습니다 \textcite.

MWE

\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}}

서문에.


의 cite-alias 기능이 포함된 Václav Pavlík의 솔루션이 마음에 드신다면 의 호환 모드( 로드 시간 옵션으로 전달하기만 하면 됩니다)가 (내가 아는 한) 정확히 다음과 같은 기능을 제공한다는 소식을 natbib듣고 기뻐하실 것입니다. 동일한 구문.biblatexnatbibnatbib=true

관련 정보