biblatex에서 자신의 인용 명령 만들기

biblatex에서 자신의 인용 명령 만들기

다음과 같은 문제가 있습니다. 일종의 매우 간단한 "이중 인용 시스템"이 필요합니다. 일반 문학의 경우 나는 문제 없이 biblatex의 저자 연도 스타일을 사용합니다. 나는 다음과 같은 작은 변경을 했습니다:

\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
\renewcommand{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{#1}

문제는 이제 다음과 같이 다른 방식(작가 연도가 아닌)으로 오래된 책(근대 초기)을 인용하고 싶다는 것입니다.

 Shortauthor, *shorttitle*, p. 124

내 생각에 해결책은 다음과 같이 자체 cite 명령을 작성하는 것인데 잘 작동하는 것 같습니다.

\DeclareBibliographyDriver{myshort}{%
 \usebibmacro{begentry}%
  \ifboolexpr{ test{\ifnameundef{shortauthor}} 
            or test {\iffieldundef{shorttitle}}}
   {\usedriver{}{\thefield{entrytype}}}
   {\printnames{shortauthor}%
    \setunit{\addcomma\space}%
    \printfield{shorttitle}\isdot}%
    \usebibmacro{finentry}%
  }

  \DeclareCiteCommand{\mycite}[\mkbibfootnote]
   {\usebibmacro{prenote}}
   {\usedriver{}{myshort}}
   {\multicitedelim}
    {\usebibmacro{postnote}}

하지만(그리고 이것은 내 실제 질문입니다): 다음과 같은 방법이 있습니까?

  • 저자의 작은 대문자를 비활성화 하시겠습니까?
  • 제목을 필기체로 써?
  • "p"를 얻으세요. 페이지 뒤로?

즉, 이 구체적인 명령에 대해 renewcommands 등에 추가한 일반 옵션을 비활성화하는 방법입니다.

답변1

이와 같은 상황에 유용한 방법은 명령을 입력할 때 켜지고 명령을 종료할 때 꺼지는 토글을 만드는 것입니다.

\newtoggle{mycite}

\renewcommand*{\mkbibnamelast}[1]{\iftoggle{mycite}{#1}{\textsc{#1}}}
\renewcommand{\postnotedelim}{\iftoggle{mycite}{\addcomma\addspace}{\addcolon\space}}
\DeclareFieldFormat{postnote}{#1}

그런 다음 새 cite 명령을 정의할 때:

\DeclareCiteCommand{\mycite}[\mkbibfootnote]
   {\toggletrue{mycite}\usebibmacro{prenote}}
   {\usebibmacro{mycite}}
   {\multicitedelim}
   {\usebibmacro{postnote}\togglefalse{mycite}}

그런데 \usedriver{}{\thefield{entrytype}정의 내에서는 사용할 수 없습니다 \DeclareBibliographyDriver. 무한 루프에 들어가고 TeX는 오류를 보고합니다. 당신이 할 수 있는 일은 새로운 턱받이 매크로를 정의하는 것입니다. 예를 들어, 정의를 시작점으로 사용하고 (짧은)제목을 이탤릭체로 넣도록 조정합니다.

\newbibmacro{mycite}{
   \ifboolexpr
     {test {\ifnameundef{shortauthor}} or
      test {\iffieldundef{shorttitle}}}
     {\usedriver{}{\thefield{entrytype}}} 
     {\printnames{shortauthor}%
     \setunit{\addcomma\space}%
     \mkbibemph{\printfield{shorttitle}}}
}

관련 정보