biblatex 的 \enquote 命令和 \providecommand

biblatex 的 \enquote 命令和 \providecommand

我不太确定我是否在问有关biblatex或关于的问题,\providecommand但我希望有人可以帮助我。

我突然想到csquotes和都biblatex定义了一个\enquote命令(但是我在的文档中找不到它biblatex)。

至少,两者

\documentclass{article}

\usepackage{csquotes}

\begin{document}
    \enquote{asdf}
\end{document}

\documentclass{article}

\usepackage{biblatex}

\begin{document}
    \enquote{asdf}
\end{document}

编译完全正确。

如果我包含该行\providecommand{\enquote}{\emph},则带有的版本csquotes仍然有效:

\documentclass{article}

\usepackage{csquotes}

\providecommand{\enquote}{\emph}

\begin{document}
    \enquote{asdf}
\end{document}

但是版本biblatex给出了错误Command \enquote already defined. \begin{document}

\documentclass{article}

\usepackage{biblatex}

\providecommand{\enquote}{\emph}

\begin{document}
    \enquote{asdf}
\end{document}

\enquote{asdf}以斜体打印,根据我的理解,如果已经定义了命令\providecommand,则不应该出现这种情况。biblatex\enquote

答案1

biblatex测试是否csquotes已加载。如果没有,则假设\enquote未定义,并使用 自行定义\newrobustcmd*。测试在 中完成\AtEndPreamble,直接在 之前完成\begin{document}

因此,您失败的例子与此处的这个例子是等效的。

\documentclass{article}
\providecommand{\enquote}{\emph}
\newcommand\enquote{blub}
\begin{document}
    \enquote{asdf}
\end{document}

\enquote的命令不如biblatex的命令强大csquotes。例如,它不考虑语言:

\documentclass{article}
\usepackage[ngerman]{babel}
%\usepackage[autostyle]{csquotes}
\usepackage{biblatex}

\begin{document}
    \enquote{asdf}
\end{document}

相关内容