我有以下問題:我需要一個非常簡單的「雙重引用系統」。對於普通文獻,我在 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”。返回頁面?
也就是說,以某種方式禁用這個具體命令的一般選項,我用更新命令等。
答案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}}}
}