Добавить информацию о переводчике в команду cite

Добавить информацию о переводчике в команду cite

Я пытаюсь добавить информацию о переводчике в команду цитирования (я уже внес изменения в библиографию в соответствии со своими потребностями).

ЕСЛИ у публикации нет автора или редактора, то переводчик печатается в cite, что правильно. Кроме того, я хочу добавить информацию, что это переводчик. (Я использую немецкий язык, поэтому информация о переводчике будет печататься на немецком языке Übers.) Например

для textcite: Фамилия (Übers.) (2010: 1-2)

для parencite: (Фамилия (Уберс.) 2010: 1-2)

Пример записи в библиографии:

@incollection{Kern.2010-EarlyChineseLiterature,
    translator = {Kern, Martin},
    booktitle = {The Cambridge History of Chinese Literature},
    date = {2010-04-01},
    isbn = {978-1-139-09541-9},
    pages = {1--115},
    publisher = {Cambridge University Press},
    title = {Early Chinese Literature, Beginnings Through Western Han},
    }

(Это всего лишь пример)

МВЭ:


%----------------------------------------------------------------------------
%   LAYOUT
%----------------------------------------------------------------------------
\documentclass[
  12pt,
  a4paper,
  headings=standardclasses,
  listof=totoc,
  numbers=noenddot
]{scrartcl}

\usepackage[hmargin=2.5cm, top=2.5cm, bottom=2cm, footskip=1cm]{geometry}
\usepackage[onehalfspacing]{setspace}
\usepackage[main=ngerman, english]{babel}
\usepackage[babel, german=quotes]{csquotes}
\usepackage[ngerman]{isodate}
\usepackage[ngerman]{datetime}

%----------------------------------------------------------------------------
%   BIB
%----------------------------------------------------------------------------
\usepackage[
  backend=biber,
  style=ext-authoryear,
  sorting=nyvt,
  datamodel=customstyles,
  maxnames=25,
  innamebeforetitle=true,
  usetranslator=true,
  alldates=terse,
  labeldate=year,
  dashed=false,
  doi=false,
  isbn=false,
  url=false
]{biblatex}
\AtEveryBibitem{%
  \clearlist{language}%
  \clearfield{pagetotal}%
}
\addbibresource{library.bib}
\usepackage[hidelinks, pdfencoding=auto]{hyperref}
\usepackage{microtype}% avoid bib formatting issues

% editor in parentheses
\DeclareDelimFormat{editortypedelim}{\addspace} 
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}
\DeclareFieldAlias{translatortype}{editortype}

%----------------------------------------------------------------------------
%   MAIN
%----------------------------------------------------------------------------

\begin{document}
\textcite[][1--2]{Kern.2010-EarlyChineseLiterature}

\parencite[][1--2]{Kern.2010-EarlyChineseLiterature}

\autocite[][1--2]{Kern.2010-EarlyChineseLiterature}

\cite[][1--2]{Kern.2010-EarlyChineseLiterature}
\nocite{*} 
\clearpage
\printbibliography

\end{document}

решение1

Мы можем адаптировать идею изBibLaTex - редактор отметок в цитировании и библиографии (labelname). По сути, мы проверяем labelnamesourceтип имени ( author/ editor/ translator), который у нас есть, и используем подходящий bibmacro для этой работы. Затем нам просто нужно переопределить citeи tetxciteтак, чтобы они печатали дополненное имя.

\documentclass[
  12pt,
  a4paper,
]{scrartcl}

\usepackage[main=ngerman, english]{babel}
\usepackage[babel, german=quotes]{csquotes}

\usepackage[
  backend=biber,
  style=ext-authoryear,
  sorting=nyvt,
  datamodel=customstyles,
  maxnames=25,
  innamebeforetitle=true,
  usetranslator=true,
  alldates=terse,
  labeldate=year,
  dashed=false,
  doi=false,
  isbn=false,
  url=false
]{biblatex}
\AtEveryBibitem{%
  \clearlist{language}%
  \clearfield{pagetotal}%
}

\usepackage[hidelinks, pdfencoding=auto]{hyperref}
\usepackage{microtype}% avoid bib formatting issues

% editor in parentheses
\DeclareDelimFormat{editortypedelim}{\addspace} 
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}
\DeclareFieldAlias{translatortype}{editortype}

\newbibmacro{cite:labelname}{%
  \printnames{labelname}%
  \iffieldequalstr{labelnamesource}{author}
    {\setunit{\printdelim{authortypedelim}}%
     \usebibmacro{authorstrg}}
    {\iffieldequalstr{labelnamesource}{editor}
       {\setunit{\printdelim{editortypedelim}}%
        \usebibmacro{editor+othersstrg}}
       {\iffieldequalstr{labelnamesource}{translator}
         {\setunit{\printdelim{editortypedelim}}%
          \usebibmacro{translator+othersstrg}}
         {}}}}

\renewbibmacro*{cite}{%
  \iffieldundef{shorthand}
    {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
       {\usebibmacro{cite:label}%
        \setunit{\printdelim{nonameyeardelim}}}
       {\usebibmacro{cite:labelname}%
        \setunit{\printdelim{nameyeardelim}}}%
     \usebibmacro{cite:labeldate+extradate}}
    {\usebibmacro{cite:shorthand}}}

\makeatletter
\renewbibmacro*{textcite}{%
  \ifnameundef{labelname}
    {\iffieldundef{shorthand}
       {\usebibmacro{cite:label}%
        \setunit{%
          \global\booltrue{cbx:parens}%
          \printdelim{nonameyeardelim}%
          \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
        \ifnumequal{\value{citecount}}{1}
          {\usebibmacro{prenote}}
          {}%
        \usebibmacro{cite:labeldate+extradate}}
       {\usebibmacro{cite:shorthand}}}
    {\usebibmacro{cite:labelname}%
     \setunit{%
       \global\booltrue{cbx:parens}%
       \printdelim{nameyeardelim}%
       \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
     \ifnumequal{\value{citecount}}{1}
       {\usebibmacro{prenote}}
       {}%
     \usebibmacro{citeyear}}}
\makeatother

\begin{filecontents}[overwrite]{\jobname.bib}
@incollection{Kern.2010-EarlyChineseLiterature,
    translator = {Kern, Martin},
    booktitle = {The Cambridge History of Chinese Literature},
    date = {2010-04-01},
    isbn = {978-1-139-09541-9},
    pages = {1--115},
    publisher = {Cambridge University Press},
    title = {Early Chinese Literature, Beginnings Through Western Han},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\textcite[][1--2]{Kern.2010-EarlyChineseLiterature}

\parencite[][1--2]{Kern.2010-EarlyChineseLiterature}

\autocite[][1--2]{Kern.2010-EarlyChineseLiterature}

\cite[][1--2]{Kern.2010-EarlyChineseLiterature}
\nocite{*} 
\clearpage
\printbibliography

\end{document}

Керн (Уберс.) (2010, С. 1–2) (Керн [Уберс.] 2010, С. 1–2) (Керн [Уберс.] 2010, С. 1–2) Керн (Уберс.) 2010, С. 1–2

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