introcite=label을 사용한 autoryear-ext: 참고문헌 항목에서는 추가 문자를 제거하지만 레이블에서는 제거하지 않습니다.

introcite=label을 사용한 autoryear-ext: 참고문헌 항목에서는 추가 문자를 제거하지만 레이블에서는 제거하지 않습니다.

나는 레이블에 첫 번째 저자만 포함하여 저자연도 스타일로 참고문헌을 제작하라는 요청을 받았습니다. 야심 찬 라벨의 경우 연도에 문자가 추가됩니다. 이는 다음 코드를 사용하여 쉽게 생성할 수 있습니다.biblatex 및 biber를 사용하여 고정된 들여쓰기 및 저자 연도 레이블로 참고문헌 만들기):

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear, backend=biber, maxcitenames=1, uniquename=false, uniquelist=false, introcite=label, dashed=false]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
  @book{Shepard2001a,
  author = {Shepard, Frank and Fisher, John},
  year = {2001},
  title = {Livestock management},
}
@book{Shepard2001b,
  author = {Shepard, Frank and Farmer, Boris},
  year = {2001},
  title = {On food supplies},
}
\end{filecontents*}
\addbibresource{\jobname.bib} % if you’re using biblatex\addbibresource{biblatex-examples.bib}

\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}

\begin{document}
  \cite{Shepard2001a, Shepard2001b}
  \printbibliography
\end{document}

보시다시피 ext-authoryearfrom 을 biblatex-ext사용 하고 있습니다 introcite=label.

결과는 다음과 같습니다: 여기에 이미지 설명을 입력하세요

참고문헌 항목에서 연도에 추가된 문자를 제거해야 한다는 점을 제외하면 이는 좋습니다. 나는 '불쾌한' 편지를 빨간색 선으로 표시했습니다. 즉, 라벨에는 문자가 필요하지만 참고문헌 항목 자체에는 필요하지 않습니다. MWE 항목은 다음과 같습니다.

Shepard et al. 2001a
   Shepard, Frank and Boris Farmer (2001), ...

나는 그것을 어디서 바꿔야 할지 알 수 없었다.

답변1

매크로 에서 다음 \printdateextra으로 대체 :\printdatedata+extradate

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear, backend=biber, maxcitenames=1, uniquename=false, uniquelist=false, introcite=label, dashed=false]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
  @book{Shepard2001a,
  author = {Shepard, Frank and Fisher, John},
  year = {2001},
  title = {Livestock management},
}
@book{Shepard2001b,
  author = {Shepard, Frank and Farmer, Boris},
  year = {2001},
  title = {On food supplies},
}
\end{filecontents*}
\addbibresource{\jobname.bib} % if you’re using biblatex\addbibresource{biblatex-examples.bib}

\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}

\makeatletter
  \renewbibmacro*{date+extradate}{%
    \iffieldundef{labelyear}
      {}
      {\printtext[\blx@delimcontext labeldate]{%
         \iflabeldateisdate
           {\printfield{issue}%
            \setunit*{\addspace}%
            \printdate}
           {\printlabeldateextra}}}}%
  \renewbibmacro*{bbx:ifmergeddate}{\iflabeldateisdate}%
  \renewbibmacro*{issue+date}{%
    \usebibmacro{bbx:ifmergeddate}
      {}
      {\printtext[issuedate]{%
         \printfield{issue}%
         \setunit*{\addspace}%
         \printdate}}}
\makeatother

\begin{document}
  \cite{Shepard2001a, Shepard2001b}
  \printbibliography
\end{document}

여기에 이미지 설명을 입력하세요

답변2

날짜 인쇄용 코드는 선택한 mergedate설정에 따라 다릅니다. 사전 설정은 mergedate=true와 동일하며 mergedate=compact다음과 같이 수정 사항을 방지할 수 있습니다.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear, backend=biber,
  maxcitenames=1, uniquename=false, uniquelist=false,
  introcite=label, dashed=false]{biblatex}

\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}

\makeatletter
\renewbibmacro*{date+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[\blx@delimcontext labeldate]{%
       \iflabeldateisdate
         {\printdate}
         {\printlabeldate}}}}
\makeatother


\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
  @book{Shepard2001a,
  author = {Shepard, Frank and Fisher, John},
  year   = {2001},
  title  = {Livestock management},
}
@book{Shepard2001b,
  author = {Shepard, Frank and Farmer, Boris},
  year   = {2001},
  title  = {On food supplies},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
  \cite{Shepard2001a, Shepard2001b}
  \printbibliography
\end{document}

Shepardet al. 2001a/셰퍼드, 프랭크, 보리스 파머(2001). 식량 공급에 대하여.//Shepard et al. 2001b/셰퍼드, 프랭크, 존 피셔(2001). 가축 관리.

다른 답변코드를 mergedate=maximum기초로 사용하고 재정의했으며 bbx:ifmergeddate필요 issue+date하지 않았음에도 불구하고 마찬가지였습니다. 여기 코드에서는 false인 extradate경우의 정보 도 제거했습니다 \iflabeldateisdate.


authoryear출력이 다른 또 다른 옵션은 인용과 참고 문헌을 결합하는 것입니다 authortitle.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[backend=biber, bibstyle=ext-authortitle, citestyle=ext-authoryear,
  sorting=nyt,
  maxcitenames=1, uniquename=false, uniquelist=false,
  introcite=label, dashed=false]{biblatex}

\setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
\setlength{\introcitewidth}{6em}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
  @book{Shepard2001a,
  author = {Shepard, Frank and Fisher, John},
  year   = {2001},
  title  = {Livestock management},
}
@book{Shepard2001b,
  author = {Shepard, Frank and Farmer, Boris},
  year   = {2001},
  title  = {On food supplies},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
  \cite{Shepard2001a, Shepard2001b}
  \printbibliography
\end{document}

Shepardet al. 2001a/셰퍼드, 프랭크, 보리스 파머. 식량 공급에. 2001.//셰퍼드 외. 2001b/셰퍼드, 프랭크, 존 피셔. 가축 관리. 2001.

관련 정보