60 coffin在enumerate环境中设置出现label对齐问题?

发布于 2022-01-23 00:19:52

如果在enumerate环境中设置coffin使得一个coffin内含有enumerate环境(也就是子enumerate环境)会出现外层enumerate的label对齐出错,如果在enumerate环境外面设置则不会出问题,但是由于需要,想要在内部进行设置,请问有办法解决这个对齐问题吗?

下面是MWE:

\documentclass{article}
\usepackage{varwidth}
\usepackage{graphicx}
\usepackage{lipsum}


\begin{document}
\ExplSyntaxOn
\coffin_new:N \l_test_a_coffin
\coffin_new:N \l_test_b_coffin
\hcoffin_set:Nn \l_test_b_coffin
  {
    \begin{varwidth}{\hsize}
      \lipsum[1]
      \begin{itemize}
        \item what~I~want
      \end{itemize}
    \end{varwidth}
  }
\hcoffin_set:Nn \l_tmpa_coffin
  {
    \begin{varwidth}{\hsize}
      \includegraphics[width = 2cm]{example-image-a}
    \end{varwidth}
  }
\coffin_join:NnnNnnnn
  \l_test_b_coffin { b } { r }
  \l_tmpa_coffin { t } { r }
  { 0pt } { 0pt }
\begin{enumerate}
  \item 
  \coffin_typeset:Nnnnn 
    \l_test_b_coffin { t } { l }
    { 0pt } { 0pt }
  \item 
  \hcoffin_set:Nn \l_test_a_coffin
    {
      \begin{varwidth}{\hsize}
        \lipsum[1]
        \begin{itemize}
          \item what~I~don't~want
        \end{itemize}
      \end{varwidth}
    }
  \hcoffin_set:Nn \l_tmpa_coffin
    {
      \begin{varwidth}{\hsize}
        \includegraphics[width = 2cm]{example-image-a}
      \end{varwidth}
    }
  \coffin_join:NnnNnnnn
    \l_test_a_coffin { b } { r }
    \l_tmpa_coffin { t } { r }
    { 0pt } { 0pt }
  \coffin_typeset:Nnnnn 
    \l_test_a_coffin { t } { l }
    { 0pt } { 0pt }
\end{enumerate}
\ExplSyntaxOff
\end{document}

image.png

查看更多

关注者
0
被浏览
1.6k
雾月
雾月 2022-01-23
这家伙很懒,什么也没写!

执行完 \item 时仍然是垂直模式,在这种情况下需要手动离开垂直模式,使用 \leavevmode\mode_leave_vertical: 均可。

在每个 \item 后紧跟 \mode_leave_vertical:
image.png

\documentclass{article}
\usepackage{varwidth}
\usepackage{graphicx}
\usepackage{lipsum}


\begin{document}
\ExplSyntaxOn
\coffin_new:N \l_test_a_coffin
\coffin_new:N \l_test_b_coffin
\hcoffin_set:Nn \l_test_b_coffin
  {
    \begin{varwidth}{\hsize}
      \lipsum[1]
      \begin{itemize}
        \item what~I~want
      \end{itemize}
    \end{varwidth}
  }
\hcoffin_set:Nn \l_tmpa_coffin
  {
    \begin{varwidth}{\hsize}
      \includegraphics[width = 2cm]{example-image-a}
    \end{varwidth}
  }
\coffin_join:NnnNnnnn
  \l_test_b_coffin { b } { r }
  \l_tmpa_coffin { t } { r }
  { 0pt } { 0pt }
\begin{enumerate}
  \item \mode_leave_vertical: % 加上这个
  \coffin_typeset:Nnnnn 
    \l_test_b_coffin { t } { l }
    { 0pt } { 0pt }
  \item \mode_leave_vertical: % 加上这个
  \hcoffin_set:Nn \l_test_a_coffin
    {
      \begin{varwidth}{\hsize}
        \lipsum[1]
        \begin{itemize}
          \item what~I~don't~want
        \end{itemize}
      \end{varwidth}
    }
  \hcoffin_set:Nn \l_tmpa_coffin
    {
      \begin{varwidth}{\hsize}
        \includegraphics[width = 2cm]{example-image-a}
      \end{varwidth}
    }
  \coffin_join:NnnNnnnn
    \l_test_a_coffin { b } { r }
    \l_tmpa_coffin { t } { r }
    { 0pt } { 0pt }
  \coffin_typeset:Nnnnn 
    \l_test_a_coffin { t } { l }
    { 0pt } { 0pt }
\end{enumerate}
\ExplSyntaxOff
\end{document}

另外再多说一句,由于 coffin 仍然是一个盒子,这意味着它不可断页。

3 个回答
纸鸢 github:ZhiyuanLck
这家伙很懒,什么也没写!

请不要自己重新造轮子

image.png

\documentclass{article}
\usepackage{lipsum}
\usepackage{enumitem}
\usepackage{graphicx}
\usepackage{paracol}

\begin{document}
\begin{enumerate}
  \item \lipsum[1]
    \columnratio{0.7}
    \begin{paracol}{2}
      \begin{itemize}[topsep=0pt, partopsep=0pt]
        \item \lipsum[2]
      \end{itemize}
      \switchcolumn
      \includegraphics[width=\linewidth]{example-image-a}
    \end{paracol}
\end{enumerate}
\end{document}
小鬼
小鬼 2022-01-23
这家伙很懒,什么也没写!

你是想图文混排吗?

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览