如果在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}
执行完 \item
时仍然是垂直模式,在这种情况下需要手动离开垂直模式,使用 \leavevmode
或 \mode_leave_vertical:
均可。
在每个 \item
后紧跟 \mode_leave_vertical:
:
\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
仍然是一个盒子,这意味着它不可断页。
请不要自己重新造轮子
\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}
太感谢您了!!