我的大部分文档都是通过几个简单的技巧开始编写的,这些技巧每个月可以帮我节省几次击键次数:
\let\cite\texcite
\let\epsilon\varepsilon
等等。现在,我想做类似的事情,使我的itemize
环境全局地表现得像包itemize*
定义的环境mdwlist
。这有点棘手,因为 itemize 是一个环境,而不是一个命令。
我该怎么做呢?
答案1
一般来说,在这种情况下,我们可以通过以下方式实现
\let\newname\name
\let\endnewname\endname
或者\renewenvironment
。
但这里没那么简单,因为旧的环境仍然会被使用。我们很容易TeX capacity exceeded
因为嵌套而陷入困境。一个解决方案是将旧的环境存储在另一个宏中,之后我们可以引用它。或者更简单,使用\makecompactlist
mdwlist 命令重新定义原始的 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)