為什麼要區分 \cite 和 \cites?

為什麼要區分 \cite 和 \cites?

是否有任何特殊原因導致一個人必須使用\cites多個bibtex-key而不是\cite

考慮以下 MWE:

\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\let\cite\cites
\begin{document}
\cite[12]{westfahl:space}[e.g.][23]{angenendt}

\cites[12]{westfahl:space}[e.g.][23]{angenendt}
\printbibliography
\end{document}

\let\cite\cites我可以毫無問題地將另一個添加到- 命令bibtex-key中,因此如果我忘記多個.in\cite也沒關係。s\citesbibtex-keys

如果它保存這樣做,這不是 的預設行為嗎biblatex

答案1

當然,這是一個設計決定,我們不能詢問該包的原始維護者,因為他不再活躍了。據我所知,正常的 cite 命令和 multicite 命令之間的分離(帶有s)從一開始就在那裡。

\cite該命令的行為在biblatex很大程度上與該命令在其他套件中的行為一致。然而,多引用版本提供了許多(任何?)其他軟體包所沒有提供的附加功能。

multicite 指令的語法與標準 cite 指令的語法完全向後相容。因此,\let\cite\cites不會比您\cites專門使用並且不允許自己使用時出現的問題更多\cite。 (請記住,\let所有命令都指向其多重引用對應項,您不希望出現不一致。)

不過,我強烈建議不要將多重引用當作常態。 biblatex 中 cite 和 multicite 命令的行為是如此眾所周知且既定,因此不應更改。最後,多重引用命令由於其參數結構而更加複雜,最好僅在必要時使用它們,而不是預設使用它們。

多引用命令所需的設定顯然比標準命令更複雜一些。這就是為什麼我們先定義標準指令,然後在上面定義多重引用命令

\DeclareMultiCiteCommand{\cites}{\cite}{\multicitedelim}

我認為保持分離的原因之一是允許首先定義一個簡單的引用命令,然後用複雜的多引用結構來結束它。這允許採用分層方法。

然而,保持兩者分離的最令人信服的原因是多重引用命令更加複雜和脆弱。 multicite 指令的性質決定了它事先並不知道參數的數量。所以它必須提前掃描那些看起來像參數的東西。儘管這非常強大,但在某些情況下,最好使用知道其參數數量的更穩定的命令。

例如

\cite[pre][post]{key} ["this"]

有效,因為\cite已經讀取了它的所有參數,因此知道這["this"]不可能是它的參數。但在

\cites[pre][post]{key} ["this"]

\cites不知道這["this"]不是它的論點之一。你需要堅持\relax\來告訴它停止掃描:\cites[pre][post]{key}\ ["this"]

相關內容