이 질문은 \edcite
명령 에 관한 것입니다.만들어진작성자: David Purton(@DavidPurton), 나중에업데이트했어요biblatex-chicago
의 옵션 과 일치해야 합니다 short
.
\edcite
가능하다면 짧은 형식을 생성해야 할 때(반복된 인용으로 인해 또는 옵션이 short
선택되어 있기 때문에) 먼저 비어 있지 않은 shorteditor
필드가 있는지 여부를 확인하도록 명령 을 추가로 업데이트하고 싶습니다. 그래서 그것을 사용하고 그렇지 않은 경우 기본값은 \printnames[given-family]{editor}
.
MWE:
\documentclass{article}
\usepackage[notes,short]{biblatex-chicago}
\begin{filecontents*}{\jobname.bib}
@book{basil:hex:mendieta.rudberg1997,
Address = {Berlin},
Author = {Basil of Caesarea},
Editor = {Emmanuel Amand de Mendieta and Rudberg, Stig Y.},
Publisher = {Akademie Verlag},
Shortauthor = {Basil},
Shorteditor = {Mend./Rud.},
Title = {Homilien zum Hexaemeron},
Year = {1997}}
\end{filecontents*}
\addbibresource{\jobname.bib}
\newbibmacro*{edcite}{%
\ifboolexpr{
test {\ifciteibid}
and
not test {\iffirstonpage}
}
{\usebibmacro{cite:ibid}}
{\ifboolexpr{
test {\ifciteseen}
or
togl {cms@allshort}
}
{\printnames[labelname]{editor}}
{\printnames[given-family]{editor}%
\newcunit
\usebibmacro{cpubl+loc+year}}}}
\DeclareCiteCommand{\edcite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{edcite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
\DeclareMultiCiteCommand{\edcites}{\edcite}{\multicitedelim}
\newrobustcmd*{\edvolcite}{\volcitecmd\edcite}
\newrobustcmd*{\edvolcites}{\volcitecmd\edcites}
\begin{document}
\edcite{basil:hex:mendieta.rudberg1997}
\end{document}
현재 출력:
멘디에타와 루드베리
원하는 출력:
Mend./Rud.
답변1
가장 간단한 해결책은 edcite
매크로를 조정하여 필드의 존재 여부를 테스트하는 것입니다 shorteditor
.
\newbibmacro*{edcite}{%
\ifboolexpr{
test {\ifciteibid}
and
not test {\iffirstonpage}
}
{\usebibmacro{cite:ibid}}
{\ifboolexpr{
test {\ifciteseen}
or
togl {cms@allshort}
}
{\ifnameundef{shorteditor}
{\printnames[labelname]{editor}}
{\printnames[labelname]{shorteditor}}}
{\printnames[given-family]{editor}%
\newcunit
\usebibmacro{cpubl+loc+year}}}}