始终用 mdwlist 的 itemize* 替换 itemize 吗?

始终用 mdwlist 的 itemize* 替换 itemize 吗?

我的大部分文档都是通过几个简单的技巧开始编写的,这些技巧每个月可以帮我节省几次击键次数:

\let\cite\texcite
\let\epsilon\varepsilon

等等。现在,我想做类似的事情,使我的itemize环境全局地表现得像包itemize*定义的环境mdwlist。这有点棘手,因为 itemize 是一个环境,而不是一个命令。

我该怎么做呢?

答案1

一般来说,在这种情况下,我们可以通过以下方式实现

\let\newname\name
\let\endnewname\endname

或者\renewenvironment

但这里没那么简单,因为旧的环境仍然会被使用。我们很容易TeX capacity exceeded因为嵌套而陷入困境。一个解决方案是将旧的环境存储在另一个宏中,之后我们可以引用它。或者更简单,使用\makecompactlistmdwlist 命令重新定义原始的 itemize 环境。

\documentclass{article}
\usepackage{mdwlist}
\let\stditemize\itemize
\let\endstditemize\enditemize
\let\itemize\undefined
\makecompactlist{itemize}{stditemize}
\begin{document}
\begin{itemize}
\item One
\item Two
\item Three
\end{itemize}
\end{document}

紧凑的输出列表:

替代文本

答案2

错误的答案(在这种情况下):

如果这是 LaTeX,那么一般来说

\renewenvironment{itemize}{\begin{itemize*}}{\end{itemize*}}

应该可以解决问题。但是在这种情况下,如果itemize*内部使用,则会导致嵌套问题itemize。(谢谢,Stefan)

相关内容