標籤:

如何設置 enumerate 列表的編號對齊方式?

enumerate 環境的默認編號對齊方式是編號右對齊,內容左對齊,如下圖

調用 enumitem 宏包,然後設置選項 align=left,可以實現編號和內容都左對齊,如下圖

但是其中的編號 9 和內容之間的距離過大,我想得到如下的效果,該如何設置呢?


LaTeX 的列表內容與頁面的左右間距是通過 parshape 實現的。因此解決這個問題的想法是,量取每一個編號的寬度,動態地調整 parshape 的縮進。可以通過 enumitem 包的 SetLabelAlign 定義一個特殊的對齊方式來實現。

documentclass{article}

usepackage{enumitem}

makeatletter

%% 定義對齊方式 hang
SetLabelAlign{hang}{%
#1%
aftergroupadjustparshapeindent}
%% 編號 #1 會通過 sbox 存到 @tempboxa 中,為避免全局設置,
%% 需要用 aftergroup 跳到盒子外部來設置

ewcommand*adjustparshapeindent{%
@ifnextcharegroup
{aftergroupadjustparshapeindent}
{adjustparshapeindent@auxi}}

ewcommand*adjustparshapeindent@auxi{%
unlessifdimwd@tempboxa=labelwidth
adjustparshapeindent@auxii
fi}
%% 調整 parshape 的縮進

ewcommand*adjustparshapeindent@auxii{%
dimen@ = dimexprwd@tempboxa-labelwidth
elax
labelwidth = wd@tempboxa
advancelinewidth -dimen@
advanceleftmargin dimen@
advance@totalleftmargin dimen@
parshape @ne @totalleftmargin linewidth}

makeatother

egin{document}

egin{enumerate}[align=hang, start=9]
item test\test
item test\test
end{enumerate}

end{document}


推薦閱讀:

在 LaTeX 中怎麼排序數字?
自學 LaTeX 可以讀什麼書入門?
如何排出精美的中文論文?
用 LaTeX 做幻燈片比用 PowerPoint 和 Keynote 做更方便、更美觀嗎?

TAG:LaTeX |