Сокращение для многотомного собрания в authoryear-comp

Сокращение для многотомного собрания в authoryear-comp

Я пытаюсь использовать shorthandс @mvcollectionв authoryear-compстиле, и это то, чего я ожидал при использовании\textcite команды:

САО (№ 1234)

Однако получается следующее:

Вильгельм и др. (CAO, № 1234)

\citeС другой стороны, простая команда генерирует цитату, как и ожидалось:

САО, № 1234

В данном случае это @mvcollection5-томное издание средневековых немецких хартий и актов, которые упорядочены по номеру; у меня снова есть каждый том в файле отдельно. Однако я пытался здесь сослаться на запись в коллекции в целом, поскольку нумерация отдельных записей не начинается заново с каждым томом. Я не понимаю, почему yearзаменяется на shorthandвместо editorи yearвместе при использовании \textcite.


МВЭ:

\documentclass{article}

\usepackage[
    style=authoryear-comp,
    backend=biber,
    safeinputenc,
]{biblatex}

\begin{filecontents*}{\jobname.bib}
@mvcollection{CAO,
    editor = {Friedrich Wilhelm and Richard Newald and Helmut {de Boor} and Diether Haacke and Bettina Kirschstein},
    gender = {pp},
    title = {{Corpus der altdeutschen Originalurkunden bis zum Jahr 1300}},
    shorthand = {CAO},
    sortkey = {CAO0},
    volumes = {5},
    publisher = {Moritz Schauenburg and Erich Schmidt},
    location = {Lahr and Berlin},
    year = {1932--2004},
    pagination = {number},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
\textcite[1234]{CAO}
\end{document}

решение1

\textciteнемного мучительно изменять. Следующее дает shorthandприоритет над всем остальным и гарантирует, что постсноска всегда заключена в круглые скобки.

\documentclass{article}
\usepackage[
    style=authoryear-comp,
    backend=biber,
]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@mvcollection{CAO,
  editor     = {Friedrich Wilhelm and Richard Newald and Helmut de Boor and Diether Haacke and Bettina Kirschstein},
  gender     = {pp},
  title      = {Corpus der altdeutschen Originalurkunden bis zum Jahr 1300},
  shorthand  = {CAO},
  sortkey    = {CAO0},
  volumes    = {5},
  publisher  = {Moritz Schauenburg and Erich Schmidt},
  location   = {Lahr and Berlin},
  date       = {1932/2004},
  pagination = {number},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\makeatletter
\newtoggle{cbx:postparens}
\renewbibmacro*{textcite}{%
  \iffieldundef{shorthand}
    {\iffieldequals{namehash}{\cbx@lasthash}
       {\ifthenelse{\iffieldequals{labelyear}{\cbx@lastyear}\AND
                    \(\value{multicitecount}=0\OR\iffieldundef{postnote}\)}
          {\setunit{\addcomma}%
           \usebibmacro{cite:extradate}}
          {\setunit{\compcitedelim}%
           \usebibmacro{cite:labeldate+extradate}%
           \savefield{labelyear}{\cbx@lastyear}}}
       {\ifnameundef{labelname}
         {\usebibmacro{cite:label}%
          \setunit{%
            \global\booltrue{cbx:parens}%
            \printdelim{nonameyeardelim}\bibopenparen}%
          \ifnumequal{\value{citecount}}{1}
            {\usebibmacro{prenote}}
            {}%
          \usebibmacro{cite:labeldate+extradate}}
         {\printnames{labelname}%
          \setunit{%
            \global\booltrue{cbx:parens}%
            \printdelim{nameyeardelim}\bibopenparen}%
          \ifnumequal{\value{citecount}}{1}
            {\usebibmacro{prenote}}
            {}%
          \iffieldundef{labelyear}
            {\usebibmacro{cite:label}}
            {\usebibmacro{cite:labeldate+extradate}}%
          \savefield{labelyear}{\cbx@lastyear}}}%
     \stepcounter{textcitecount}%
     \savefield{namehash}{\cbx@lasthash}%
     \togglefalse{cbx:postparens}}%
    {\usebibmacro{cite:shorthand}%
     \toggletrue{cbx:postparens}%
     \global\undef\cbx@lasthash
     \global\undef\cbx@lastyear}%
  \setunit{%
    \ifbool{cbx:parens}
      {\bibcloseparen\global\boolfalse{cbx:parens}}
      {}%
    \textcitedelim}}

\renewbibmacro*{textcite:postnote}{%
  \ifboolexpr{togl {cbx:postparens} and not test {\iffieldundef{postnote}}}
    {\togglefalse{cbx:postparens}%
     \printunit{\extpostnotedelim\bibopenparen\global\booltrue{cbx:parens}}}
    {}%
  \usebibmacro{postnote}%
  \ifthenelse{\value{multicitecount}=\value{multicitetotal}}
    {\setunit{}%
     \printtext{%
       \ifbool{cbx:parens}
         {\bibcloseparen\global\boolfalse{cbx:parens}}
         {}}}
    {\setunit{%
       \ifbool{cbx:parens}
         {\bibcloseparen\global\boolfalse{cbx:parens}}
         {}%
       \textcitedelim}}}

\DeclareCiteCommand{\textcite}[\cbx@textcite@init\cbx@textcite]
  {\gdef\cbx@savedkeys{}%
   \citetrackerfalse%
   \pagetrackerfalse%
   \DeferNextCitekeyHook%
   \usebibmacro{cite:init}}
  {\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0}
     {\protected@xappto\cbx@savedcites{()(\thefield{multipostnote})}%
      \global\clearfield{multipostnote}}
     {}%
   \xappto\cbx@savedkeys{\thefield{entrykey},}%
   \iffieldequals{namehash}{\cbx@lasthash}
     {\iffieldundef{shorthand}
        {}
        {\stepcounter{textcitetotal}%
         \global\undef\cbx@lasthash}}
     {\stepcounter{textcitetotal}%
      \savefield{namehash}{\cbx@lasthash}}}
  {}
  {\protected@xappto\cbx@savedcites{%
     [\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}}
\makeatother

\begin{document}
\textcite[1234]{CAO}
\end{document}

введите описание изображения здесь

решение2

В этом случае \textciteпроверяется, связан ли labelnameсо ссылкой, и используется сокращение, если оно пусто. Для этой конкретной записи используется editorкак labelname. Если вы не хотите, чтобы он использовался в такой роли, вы можете использовать опцию useeditor=false, которая также устанавливается для каждой записи с помощью options = {useeditor=false},. Обратите внимание, что это изменит формат записи в библиографии, что на самом деле имеет смысл, учитывая формат цитаты. Я считаю, что семантически это то, что вы искали, но результат не идентичен тому, что вы ожидали (он выглядит как простой \cite). Но, возможно, \parenciteэто также возможный вариант «из коробки» (в зависимости от вашего текстового потока, конечно).

введите описание изображения здесь

Полная версия MWE:

\documentclass{article}

\usepackage[
    style=authoryear-comp,
    backend=biber,
    safeinputenc,
]{biblatex}

\begin{filecontents*}{\jobname.bib}
@mvcollection{CAO,
    editor = {Friedrich Wilhelm and Richard Newald and Helmut {de Boor} and Diether Haacke and Bettina Kirschstein},
    gender = {pp},
    title = {{Corpus der altdeutschen Originalurkunden bis zum Jahr 1300}},
    shorthand = {CAO},
    sortkey = {CAO0},
    volumes = {5},
    publisher = {Moritz Schauenburg and Erich Schmidt},
    location = {Lahr and Berlin},
    year = {1932--2004},
    pagination = {number},
    options = {useeditor=false},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
\textcite[1234]{CAO}

\parencite[1234]{CAO}

\printbibliography
\end{document}

Связанный контент