从 `cleveref` 中删除牛津逗号

从 `cleveref` 中删除牛津逗号

引用多个定理时,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}

在此处输入图片描述

相关内容