LaTeX技巧876:如何设置 enumerate 列表的编号对齐方式?

enumerate 环境的默认编号对齐方式是编号右对齐,内容左对齐,如下图 调用 enumitem 宏包,然后设置选项 align=left,可以实现编号和内容都左对齐,如下图但是其中的编号 9 和内容之间的距离过大,我想得到如下的效果,该如何设置呢?
LaTeX 的列表内容与页面的左右间距是通过 \parshape 实现的。因此解决这个问题的想法是,量取每一个编号的宽度,动态地调整 \parshape 的缩进。可以通过 enumitem 包的 \SetLabelAlign 定义一个特殊的对齐方式来实现。
\documentclass{article}

\usepackage{enumitem}

\makeatletter

%% 定义对齐方式 hang
\SetLabelAlign{hang}{%
  #1%
  \aftergroup\adjustparshapeindent}
%% 编号 #1 会通过 \sbox 存到 \@tempboxa 中,为避免全局设置,
%% 需要用 \aftergroup 跳到盒子外部来设置
\newcommand*\adjustparshapeindent{%
  \@ifnextchar\egroup
    {\aftergroup\adjustparshapeindent}
    {\adjustparshapeindent@auxi}}
\newcommand*\adjustparshapeindent@auxi{%
  \unless\ifdim\wd\@tempboxa=\labelwidth
    \adjustparshapeindent@auxii
  \fi}
%% 调整 \parshape 的缩进
\newcommand*\adjustparshapeindent@auxii{%
  \dimen@ = \dimexpr\wd\@tempboxa-\labelwidth\relax
  \labelwidth = \wd\@tempboxa
  \advance\linewidth -\dimen@
  \advance\leftmargin \dimen@
  \advance\@totalleftmargin \dimen@
  \parshape \@ne \@totalleftmargin \linewidth}

\makeatother

\begin{document}

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

\end{document}
效果图: style1_list选自:https://www.zhihu.com/question/53242822/answer/134167664
分享到:
未经允许不得转载:LaTeX技巧876:如何设置 enumerate 列表的编号对齐方式?
已有 条意见

    最新文章

    加载中...
      本站提供专业LaTeX排版、咨询、定制服务,请点击下图咨询详情


      全国首个精品的LaTeX视频教程,大牛带着你入门,让LaTeX学习不再纠结,请点击下图咨询详情

      热门评论

        联系我们

        交流QQ群:91940767
        本站QQ号:343083553
        邮箱联系latexstudio@qq.com
        淘宝店铺latexstudio.taobao.com 提供排版,模板定制,培训,图片处理,视频教程等LaTeX服务。

        关注微信公众号: latex2015

        如果您投稿或者希望加入我们团队,请发送您的简历到latexstudio@qq.com。

        科技艺术的完美融合,专业精致的排版体验

        联系我们联系我们