二级项目的自定义环境垂直对齐不正确

二级项目的自定义环境垂直对齐不正确

在写一个包含很多enumerate环境的文档时,我想添加一个小子集,

1. So the item is here 
     — and the inset is here

我很容易就做到了。但是,当我想添加一些内容以使其正确对齐段落时,我遇到了问题。有人知道我在测量高度时做错了什么吗\lrbox

梅威瑟:

\documentclass{article}
\usepackage{lipsum}
\usepackage{calc}

\newsavebox\mytextbox
\def\linelength{\linewidth-2em-1ex}
\newcommand{\two}[1]{%
    \vspace{3pt}\\\hspace*{1em}---\ 
    \begin{lrbox}{\mytextbox}\parbox[t]{\linelength}{#1}\end{lrbox}
    \parbox[t][\heightof{\usebox{\mytextbox}}][t]{\linelength}{\usebox{\mytextbox}}}

\begin{document}
    \begin{enumerate}
        \item Long Items 
        \item \lipsum*[1]
            \two{Second Level Item}
            \two{\lipsum*[2]}
            \two{Another second level item}
        \item A first level item
    \end{enumerate}
\end{document}

输出:

在此处输入图片描述

它似乎根本没有测量盒子,而是仅分配某种默认高度或其他东西(\parbox没有默认值,因此令人困惑)。

答案1

你确实把事情复杂化了:只需使用嵌套的itemize

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


\begin{document}

\begin{enumerate}
\item Long Items
\item \lipsum*[1]
  \begin{itemize}[label=---,topsep=0pt]
  \item Second Level Item
  \item \lipsum*[2]
  \item Another second level item
  \end{itemize}
\item A first level item
\end{enumerate}

\end{document}

在此处输入图片描述

答案2

嗯,我想我真的太复杂了……

\documentclass{letter}
\usepackage{lipsum}
\usepackage{calc}

\def\linelength{\linewidth-2em-1ex}
\newcommand{\two}[1]{%
    \vspace{3pt}\\\hspace*{1em}---\ 
    \begin{minipage}[t]{\linelength}#1\\\end{minipage}
    \vspace*{-2\baselineskip}\\
}

\begin{document}
    \begin{enumerate}
        \item Long Items 
        \item \lipsum*[1]
            \two{Second Level Item}
            \two{\lipsum*[2]}
            \two{Another second level item}
        \item A first level item
    \end{enumerate}
\end{document}

通过简单地使用minipage,根本不存在任何测量问题。

输出:

在此处输入图片描述

相关内容