引用多个定理时,cleveref
有时会使用牛津逗号(显然也称为连续逗号),有时则不用。我希望它不要这样。
请注意,tex.SE 上有一个非常相似的问题:可以让 cleveref 使用牛津逗号进行多次引用吗?。我尝试使用\newcommand{\creflastconjunction}{ and~}
(可以从下面的 MWE 中取消/注释掉它以查看其效果),但它不起作用。事实上,如果有它,那么你可以看到第一个列表中有一个双倍的空格。
平均能量损失
\documentclass[]{article}
\usepackage{amsthm}
\usepackage{cleveref}
\newtheorem{thm}{Theorem}
\crefname{thm}{Theorem}{Theorems}
\newtheorem{prop}[thm]{Proposition}
\crefname{prop}{Proposition}{Propositions}
\newtheorem{lem}[thm]{Lemma}
\crefname{lem}{Lemma}{Lemmas}
\newcommand{\creflastconjunction}{ and~}
\begin{document}
\begin{thm}
\label{thm1}
Thm 1
\end{thm}
\begin{prop}
\label{prop}
Prop 1
\end{prop}
\begin{thm}
\label{thm3}
Thm 3
\end{thm}
\begin{lem}
\label{lem}
Lem 1
\end{lem}
\begin{thm}
\label{thm5}
Thm 5
\end{thm}
\cref{thm1,prop,lem}
\cref{thm1,thm3,thm5}
\end{document}
当然,解决办法就是只写\cref{thm1}, \cref{thm3} and \cref{thm5}
,但这会删除有益的功能。
答案1
您还需要\creflastgroupconjunction
按照手册第 8.1.1 节末尾(第 14 页)所述进行定义。
\documentclass[]{article}
\usepackage{amsthm}
\usepackage{cleveref}
\newtheorem{thm}{Theorem}
\crefname{thm}{Theorem}{Theorems}
\newtheorem{prop}[thm]{Proposition}
\crefname{prop}{Proposition}{Propositions}
\newtheorem{lem}[thm]{Lemma}
\crefname{lem}{Lemma}{Lemmas}
\newcommand{\creflastconjunction}{ and~}
\newcommand{\creflastgroupconjunction}{ and~}
\begin{document}
\begin{thm}
\label{thm1}
Thm 1
\end{thm}
\begin{prop}
\label{prop}
Prop 1
\end{prop}
\begin{thm}
\label{thm3}
Thm 3
\end{thm}
\begin{lem}
\label{lem}
Lem 1
\end{lem}
\begin{thm}
\label{thm5}
Thm 5
\end{thm}
\cref{thm1,prop,lem}
\cref{thm1,thm3,thm5}
\end{document}