重定义enumerate环境遇问题:最后项左移及换行异常求助
解决enumerate环境编号格式与排版异常问题
我来帮你搞定这两个排版问题,先说说你原代码里的问题根源,再给你最规范的解决方案:
问题1:最后一项向左偏移
你用了$\left.\arabic*\right)$来设置编号格式,这里的\left.和\right)是用于数学公式中自动匹配括号高度的命令,但你只是需要一个普通的右括号,用它们反而会引入不必要的数学环境间距,导致最后一项的排版偏移。换成普通的\arabic*)就可以解决这个问题。
问题2:必须加\\才自动换行
你在\end{originalenumerate}后加了\\,这完全是多余的!LaTeX的enumerate环境本身会自动处理结束后的换行和间距,手动加\\反而会破坏排版逻辑,甚至可能导致额外的空行。
修正后的完整代码
其实用enumitem包的话,根本不需要手动重定义enumerate环境,直接用\setlist全局设置编号格式就好,既简洁又可靠:
\documentclass[a4paper, 14pt]{extarticle} \usepackage{amsfonts, amsmath, amssymb, amsthm} \usepackage{enumitem} \usepackage[top = 1.5cm, right = 1.5cm, bottom = 1.5cm, left = 1.5cm]{geometry} \usepackage{mathtools} % DeclarePairedDelimiter \usepackage{nomencl} % 全局设置enumerate的编号为「数字+右括号」 \setlist[enumerate]{label=\arabic*)} \newtheorem{theorem}{Theorem} \newtheorem*{corollary*}{Corollary} \begin{document} \section*{Theorems} \begin{theorem} Let \begin{enumerate} \item Condition 1, \item Condition 2, \item Condition 3, \end{enumerate} then assertion. \end{theorem} \begin{proof} Proof. \end{proof} \end{document}
额外小技巧
如果你不想全局修改所有enumerate的格式,只想在特定环境中使用这个编号样式,直接在环境里加选项就行,比如:
\begin{enumerate}[label=\arabic*)] \item 只在这里生效的项1 \item 只在这里生效的项2 \end{enumerate}
这样既解决了偏移问题,又不需要手动加多余的换行命令,排版完全符合LaTeX的规范逻辑~
内容的提问来源于stack exchange,提问作者32seph
相关产品推荐
相关产品推荐

