以下 LaTeX 代码保存在 中~\Test.tex
。
\documentclass{article}
\usepackage{cleveref}
\begin{document}
\begin{equation}\label{q}
x \leq y
\end{equation}
Behold~\cref{q}.
\end{document}
然后在终端中执行以下命令。
> cd ~
> lualatex Test
因此,在 中生成了一个 PDF 文件~\Test.pdf
。在 PDF 查看器中打开时,文件显示如下。(我仅截取了显示的相关部分。)
我想创建一个equality
名为 的环境inequality
,它将用于排版不等式,其交叉引用将显示不平等代替等式。此新功能的效果应该是这样的,如果在上面的 LaTeX 代码中,两个出现的equality
被替换为inequality
,则生成的 PDF 文件将与以前几乎相同,只是缩写等式将被取代不平等。新inequality
环境应该与环境共享一个计数器equality
。
一次尝试
我尝试使用以下代码来实现我的目标。
\documentclass{article}
\usepackage{cleveref}
\newenvironment{inequality}{\begin{equation}}{\end{equation}}
\crefname{inequality}{ineq.}{ineqs.}
\Crefname{inequality}{Ineq.}{Ineqs.}
\begin{document}
\begin{inequality}\label{q}
x \leq y
\end{inequality}
Behold~\cref{q}.
\end{document}
然而,生成的 PDF 文件看起来和以前一样。特别是交叉引用写成等式,而不是不平等
答案1
使用\crefalias
(手册第 6 部分cleveref
)。
\documentclass{article}
\usepackage{cleveref}
\newenvironment{inequality}
{\crefalias{equation}{inequality}\begin{equation}}
{\end{equation}\ignorespacesafterend}
\crefname{inequality}{ineq.}{ineqs.}
\Crefname{inequality}{Ineq.}{Ineqs.}
\begin{document}
\begin{inequality}\label{q}
x \leq y
\end{inequality}
Behold~\cref{q}.
\begin{equation}\label{r}
x = y
\end{equation}
Behold~\cref{r}.
\end{document}
如果您想要获得与方程式相同的输出,则需要使用\crefformat
和朋友。
答案2
您无需创建新环境即可完成此操作,只需通过 cleveref 即可:
\documentclass{article}
\usepackage{cleveref}
\newcounter{inequality}
\crefname{inequality}{Inequality}{Inequalities}
\begin{document}
\begin{equation}\label[inequality]{q}
x \leq y
\end{equation}
Behold~\cref{q}.
\end{document}
如果您想要保留方程的(连续)编号,则可以使用 aliascnt 包。
\documentclass{article}
\usepackage{aliascnt}
\usepackage{cleveref}
\newaliascnt{inequality}{equation}
\crefname{inequality}{ineq.}{ineqs.}
\begin{document}
\begin{equation}\label[inequality]{q}
x \leq y
\end{equation}
\begin{equation}\label{r}
x = y
\end{equation}
Behold~\cref{q} and \cref{r}.
\end{document}
更新: 这基于之前的解决方案,确实创建了一个新环境。标签类型在环境中被覆盖为不等式,因此不必提供。
\documentclass{article}
\usepackage{aliascnt}
\usepackage{cleveref}
\newaliascnt{inequality}{equation}
\crefname{inequality}{ineq.}{ineqs.}
\makeatletter
\newenvironment{inequality}{
\begin{equation}
\protected@edef\cref@currentlabel{%
\expandafter\cref@override@label@type%
\cref@currentlabel\@nil{inequality}}%
}{
\end{equation}
}
\begin{document}
\begin{inequality}\label{in1}
x \leq y
\end{inequality}
\begin{equation}\label{eq1}
x = y
\end{equation}
\begin{inequality}\label{in2}
x \geq y
\end{inequality}
\begin{equation}\label{eq2}
x + 1 = y + 1
\end{equation}
Behold~\cref{in1} and \cref{eq2} and \cref{in2} and \cref{eq2}.
\end{document}