我不太确定我是否在问有关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}