내 bbx 파일에서 origdate를 어떻게 사용자 정의합니까?

내 bbx 파일에서 origdate를 어떻게 사용자 정의합니까?

현재 PDF에서는 다음과 같습니다("Ndr."은 "reprint"의 독일어 약어입니다).

크리스티안 크라흐트: Faserland. 1995년, Ndr. 뮌헨: Deutscher Taschenbuch Verlag 2012.

= author: title. origdate, address: publisher date.

나는 이것을 다음과 같이 보고 싶다:

크리스티안 크라흐트: Faserland. 뮌헨: Deutscher Taschenbuch Verlag 2012 [1995].

= author: title. address: publisher date [origdate].

내 .bib 파일의 모든 종류의 항목에 대해 동일한 방식으로 변경하고 싶습니다. 원본 날짜는 항상 날짜 뒤의 괄호 안에 있어야 합니다.

authortitle-dw나는 아래 코드가 출력을 정의하는 bbx 파일(기반)의 섹션이라는 것을 알아냈습니다 . 위의 예처럼 origdate를 표시하도록 어떻게 변경해야 합니까?

  \renewbibmacro*{publisher+location+date}{%
\ifbool{bbx:origfields}
    {\ifbool{bbx:nolocation}
      {\iffieldundef{origyear}
        {\usebibmacro{loc+pub+year}}
        {\usebibmacro{origloc+origpub+origyear}}}
      {\iflistundef{origlocation}
        {\iffieldundef{origyear}
          {\usebibmacro{loc+pub+year}}
          {\usebibmacro{origloc+origpub+origyear}}}
        {\iffieldundef{origyear}
          {\blxdw@warning{%
             Field 'origlocation' is set, but 'origdate' is 
             \MessageBreak%
             empty at entry '\abx@field@entrykey'.
             The 'orig' fields \MessageBreak are omitted
             for this entry}%
           \usebibmacro{loc+pub+year}}
          {\usebibmacro{origloc+origpub+origyear}}}}}
    {\usebibmacro{loc+pub+year}}}

\newbibmacro{loc+pub+year}{%
  \ifbool{bbx:nolocation}
    {}
    {\printlist{location}%
     \ifbool{bbx:nopublisher}
       {\setunit*{\locationdatepunct}}%
       {\iflistundef{publisher}
         {\setunit*{\locationdatepunct}}
         {\setunit*{\locationpublisherpunct}%
          \printlist{publisher}%
          \setunit*{\publisherdatepunct}}}}%
  \ifbool{bbx:edsuper}
    {\printfield[edition:super]{edition}}
    {}%
  \usebibmacro{date}%
  \newunit}

\newbibmacro{origloc+origpub+origyear}{%
  \ifbool{bbx:nolocation}
    {}
    {\printlist{origlocation}%
     \ifbool{bbx:nopublisher}
       {\setunit*{\locationdatepunct}}%
       {\iflistundef{origpublisher}
         {\setunit*{\locationdatepunct}}
         {\setunit*{\locationpublisherpunct}%
          \printlist{origpublisher}%
          \setunit*{\publisherdatepunct}}}}%
  \ifbool{bbx:edsuper}
    {\printfield[edition:super]{edition}}
    {}%
  \usebibmacro{origdate}%
  \ifdefstring{\bbx@origfieldsformat}{punct}
    {\setunit*{\origfieldspunct}%
     \usebibmacro{origfields:loc+pub+year}}
    {\ifdefstring{\bbx@origfieldsformat}{parens}
      {\setunit*{\addspace}%
       \printtext[parens]{%
         \usebibmacro{origfields:loc+pub+year}}}
      {\ifdefstring{\bbx@origfieldsformat}{brackets}
        {\setunit*{\addspace}%
         \printtext[brackets]{%
           \usebibmacro{origfields:loc+pub+year}}}
        {\setunit*{\origfieldspunct}%
         \usebibmacro{origfields:loc+pub+year}}}}
  \newunit}

\newbibmacro{origfields:loc+pub+year}{%
  \bibstring{reprint}%
  \setunit{\addspace}%
  \ifbool{bbx:nolocation}
    {}
    {\printlist{location}%
     \ifbool{bbx:nopublisher}
       {\setunit*{\locationdatepunct}}%
       {\iflistundef{publisher}
         {\setunit*{\locationdatepunct}}
         {\setunit*{\locationpublisherpunct}%
          \printlist{publisher}%
          \setunit*{\publisherdatepunct}}}}%
  \usebibmacro{date}}

  \newbibmacro*{origdate}{\printorigdate}

MWE는 다음과 같습니다.

\begin{filecontents*}{literature.bib}
    @book{kracht_faserland_2012,
        address = {München},
        title = {Faserland},
        publisher = {Deutscher Taschenbuch Verlag},
        author = {Kracht, Christian},
        date = {2012},
        origdate = {1995}
    }

\end{filecontents*}

\documentclass[twoside=false,fontsize=12pt,toc=bibliography,toc=listof]{scrbook}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[babel,german=guillemets]{csquotes}
\usepackage[backend=biber,style=authortitle-dw,series=afteryear,firstfull,nopublisher=false,sorting=nyt]{biblatex}
              \addbibresource{literature.bib}

\begin{document}

Dies ist ein Beispielsatz.\footnote{Vgl. \cite[76]{kracht_faserland_2012}.}

\backmatter
\printbibliography

\end{document}

답변1

아마도 가장 우아한 솔루션은 아니지만 나에게는 효과적입니다. 일부 구두점 명령을 변경하고 요소의 순서를 변경해야 합니다.

    \newbibmacro*{origdate}{\printorigdate}

\renewbibmacro*{publisher+location+date}{%
  \ifbool{bbx:origfields}
    {\ifbool{bbx:nolocation}
      {\iffieldundef{origyear}
        {\usebibmacro{loc+pub+year}}
        {\usebibmacro{origloc+origpub+origyear}}}
      {\iflistundef{origlocation}
        {\iffieldundef{origyear}
          {\usebibmacro{loc+pub+year}}
          {\usebibmacro{origloc+origpub+origyear}}}
        {\iffieldundef{origyear}
          {\blxdw@warning{%
             Field 'origlocation' is set, but 'origdate' is 
             \MessageBreak%
             empty at entry '\abx@field@entrykey'.
             The 'orig' fields \MessageBreak are omitted
             for this entry}%
           \usebibmacro{loc+pub+year}}
          {\usebibmacro{origloc+origpub+origyear}}}}}
    {\usebibmacro{loc+pub+year}}}

\newbibmacro{loc+pub+year}{%
  \ifbool{bbx:nolocation}
    {}
    {\printlist{location}%
   \ifbool{bbx:nopublisher}
       {\setunit*{\locationdatepunct}}%
       {\iflistundef{publisher}
         {\setunit*{\locationdatepunct}}
         {\setunit*{\locationpublisherpunct}%
          \printlist{publisher}%
           \setunit*{\addspace}}}}%
  \ifbool{bbx:edsuper}
    {\printfield[edition:super]{edition}}
    {}%
  \usebibmacro{date}%
  }

\newbibmacro{origloc+origpub+origyear}{%
  \ifbool{bbx:nolocation}
    {}
    {\printlist{origlocation}%
  \ifbool{bbx:nopublisher}
       {\setunit*{\locationdatepunct}}%
       {\iflistundef{origpublisher}
         {\setunit*{\locationdatepunct}}
         {\setunit*{\locationpublisherpunct}%
          \printlist{origpublisher}%
          \setunit*{\addspace}}}}%
  \ifdefstring{\bbx@origfieldsformat}{punct}
    {\setunit*{\origfieldspunct}%
     \usebibmacro{loc+pub+year}}
    {\ifdefstring{\bbx@origfieldsformat}{parens}
      {\setunit*{\addspace}%
       \printtext[parens]{%
         \usebibmacro{loc+pub+year}}}
      {\ifdefstring{\bbx@origfieldsformat}{brackets}
        {\setunit*{\addspace}%
         \printtext[brackets]{%
           \usebibmacro{loc+pub+year}}}
        {\setunit*{\origfieldspunct}%
         \usebibmacro{loc+pub+year}}}}
         \usebibmacro{origdate}%
  \newunit}

관련 정보