Есть ли какая-то особая причина, по которой нужно использовать
\cites
for более одногоbibtex-key
вместо\cite
?
Учитывая следующие МВЭ:
\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
в -команду \cite
, поэтому не имеет значения, если я забуду s
in \cites
для нескольких bibtex-keys
.
Если это так, разве не может это быть поведением по умолчанию biblatex
?
решение1
Конечно, это решение дизайна, и мы не можем спросить первоначального сопровождающего пакета, так как он больше не активен. Насколько я могу судить, разделение между обычной командой cite и multicite-command (сs
) был там с самого начала.
Поведение команды \cite
в biblatex
значительной степени совпадает с поведением этой команды с другими пакетами. Однако версии multicite предлагают дополнительные возможности, которые не предоставляют многие (любые?) другие пакеты.
Синтаксис команд multicite полностью обратно совместим с синтаксисом стандартных команд cite. Поэтому \let\cite\cites
не создаст больше проблем, чем если бы вы использовали \cites
исключительно и никогда не позволяли себе использовать \cite
. (Помните, что \let
все команды их multicite-аналоги не должны вызывать несоответствий.)
Я бы настоятельно не советовал делать multicite нормой. Поведение команд cite и multicite в biblatex настолько известно и устоялось, что его не следует менять. Наконец, команды multicite гораздо более сложны и изощренны из-за структуры аргументов, поэтому лучше использовать их только при необходимости, а не по умолчанию.
Настройка, необходимая для команды multi cite, очевидно, немного сложнее, чем для стандартных команд. Вот почему мы сначала определяем стандартные команды, а затем команды multicite сверху с помощью
\DeclareMultiCiteCommand{\cites}{\cite}{\multicitedelim}
Я предполагаю, что одной из причин, по которой было сохранено разделение, является возможность сначала определить простую команду cite, а затем дополнить ее сложной структурой multicite. Это позволяет использовать многоуровневый подход.
Однако наиболее веская причина сохранения разделения между ними заключается в том, что команда multicite гораздо более сложная и хрупкая. Природа команды multicite диктует, что она не знает заранее количество аргументов. Поэтому ей придется сканировать заранее то, что выглядит как аргументы. Несмотря на то, что это довольно надежно, существуют ситуации, когда более стабильная команда, которая знает количество своих аргументов, предпочтительнее.
Например
\cite[pre][post]{key} ["this"]
работает, потому что \cite
уже прочитал все свои аргументы и поэтому знает, что ["this"]
не может быть его аргументом. Но в
\cites[pre][post]{key} ["this"]
\cites
не знает, что ["this"]
это не один из его аргументов. Вам нужно вставить \relax
или \
сказать ему прекратить сканирование: \cites[pre][post]{key}\ ["this"]
.