\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}

-commandに\let\cite\cites別のものを追加しても問題がないので、複数の場合にin を忘れても問題ありません。bibtex-key\cites\citesbibtex-keys

そうすることが保存できるのであれば、それが のデフォルトの動作になるのではないでしょうかbiblatex?

答え1

もちろんこれは設計上の決定であり、パッケージの元のメンテナーに尋ねることはできません。彼はもう活動していないからです。私が知る限り、通常のciteコマンドとmulticiteコマンド(s)は最初から存在していました。

\citeのコマンドの動作はbiblatex、他のパッケージでのそのコマンドの動作とほぼ一致します。ただし、マルチサイト バージョンでは、他の多くの (まったく?) パッケージでは提供されていない追加機能が提供されます。

multicite コマンドの構文は、標準の cite コマンドの構文と完全に下位互換性があります。したがって、のみを使用し、 をまったく使用しない\let\cite\cites場合に比べて、 で問題が発生することはありません。(すべてのコマンドを multicite の対応するコマンドに置き換えることを忘れないでください。不整合は避けてください。)\cites\cite\let

ただし、multicite を標準にすることは強くお勧めしません。biblatex の cite コマンドと multicite コマンドの動作はよく知られており、確立されているため、変更しないでください。最後に、multicite コマンドは引数の構造により非常に洗練され、複雑になっているため、必要な場合にのみ使用し、デフォルトとして使用しない方がよいでしょう。

マルチサイトコマンドに必要な設定は、標準コマンドよりも少し複雑です。そのため、最初に標準コマンドを定義し、その上にマルチサイトコマンドを定義します。

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

分離が維持されている理由の 1 つは、最初に単純な cite コマンドを定義し、次に複雑な multicite 構造でそれを仕上げることができるようにするためであると考えられます。これにより、階層化されたアプローチが可能になります。

しかし、この 2 つを分離しておく最も説得力のある理由は、multicite コマンドの方がはるかに複雑で脆弱であるということです。multicite コマンドの性質上、引数の数は事前にわかりません。そのため、引数のように見えるものを事前にスキャンする必要があります。これは非常に堅牢ですが、引数の数を知っているより安定したコマンドの方が望ましい場合もあります。

例えば

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

は機能します。なぜなら、\citeすでにその議論をすべて読んでおり、それが["this"]その議論ではないことを知っているからです。しかし、

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

\cites["this"]は、 が引数の 1 つではないことを知りません。\relaxまたはを挿入して\、スキャンを停止するように指示する必要があります\cites[pre][post]{key}\ ["this"]

関連情報