![enumitem:使用变量在本地打开和关闭标签设置?](https://linux22.com/image/441353/enumitem%EF%BC%9A%E4%BD%BF%E7%94%A8%E5%8F%98%E9%87%8F%E5%9C%A8%E6%9C%AC%E5%9C%B0%E6%89%93%E5%BC%80%E5%92%8C%E5%85%B3%E9%97%AD%E6%A0%87%E7%AD%BE%E8%AE%BE%E7%BD%AE%EF%BC%9F.png)
三年前,David Carlisle 在 tex.stackexchange 中提供了一段代码:
lampor pf2.sty 并隐藏/显示嵌套枚举环境的部分
这对我使用 Leslie Lamport 的 pf2.sty 简化版有很大帮助,该简化版是为了处理 Leslie Lamport 所谓的结构化证明而创建的
https://lamport.azurewebsites.net/pubs/proof.pdf http://lamport.azurewebsites.net/latex/pf2.pdf http://lamport.azurewebsites.net/latex/latex.html
我的风格基本上是这样的
\setenumerate[1]{label=$\langle$1$\rangle$\arabic*., ref=$\langle$1$\rangle$\arabic*}
\setenumerate[2]{label=$\langle$2$\rangle$\arabic*., ref=$\langle$2$\rangle$\arabic*}
\setenumerate[3]{label=$\langle$3$\rangle$\arabic*., ref=$\langle$3$\rangle$\arabic*}
\setenumerate[4]{label=$\langle$4$\rangle$\arabic*., ref=$\langle$4$\rangle$\arabic*}
\setenumerate[5]{label=$\langle$5$\rangle$\arabic*., ref=$\langle$5$\rangle$\arabic*}
但是,我并不想有一个新的环境(使用 newlist 命令,因为我是 GNU emacs 和 AucTex 的忠实用户,所以为了方便地插入这样的新环境,我不得不编写一些我试图避免的额外的 lisp 代码)
然而我遇到一个愚蠢的问题,如果我将这种样式加载到任何乳胶文档中,那么通过构造,每个枚举环境都会使用 Lamport 标签样式。
为了有一个更标准的标签方案,我每次都写
\end{enumerate}
所以问题是我是否可以有一个新的变量来在缓冲区中打开和关闭我的风格的配置,以便我可以在 Lamport 风格和原始行为之间切换。
答案1
我相信最好明确你的意图并在需要时使用适当的环境。
\documentclass{article}
\usepackage{enumitem}
\makeatletter
\SetEnumitemKey{lamport}{
label=$\langle$\the\@enumdepth$\rangle$\arabic*.,
ref=$\langle$\the\@enumdepth$\rangle$\arabic*,
nosep
}
\makeatother
\begin{document}
\begin{enumerate}[lamport]
\item X
\item Xa
\begin{enumerate}[lamport]
\item Y
\item Ya
\begin{enumerate}[lamport]
\item Z
\item Za
\begin{enumerate}[lamport]
\item inner
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{document}
或者,定义一个适用变更的环境。
\documentclass{article}
\usepackage{enumitem}
\makeatletter
\newenvironment{lamport}{%
\setenumerate{
label=$\langle$\the\@enumdepth$\rangle$\arabic*.,
ref=$\langle$\the\@enumdepth$\rangle$\arabic*,
nosep
}
}{}
\makeatother
\begin{document}
\begin{lamport}
\begin{enumerate}
\item X
\item Xa
\begin{enumerate}
\item Y
\item Ya
\begin{enumerate}
\item Z
\item Za
\begin{enumerate}
\item inner
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{lamport}
\begin{enumerate}
\item Standard 1
\begin{enumerate}
\item Standard 2
\begin{enumerate}
\item Standard 3
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{document}