다음과 같은 문제가 있습니다. 일종의 매우 간단한 "이중 인용 시스템"이 필요합니다. 일반 문학의 경우 나는 문제 없이 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}}}
}