![二级项目的自定义环境垂直对齐不正确](https://linux22.com/image/302892/%E4%BA%8C%E7%BA%A7%E9%A1%B9%E7%9B%AE%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E7%8E%AF%E5%A2%83%E5%9E%82%E7%9B%B4%E5%AF%B9%E9%BD%90%E4%B8%8D%E6%AD%A3%E7%A1%AE.png)
在写一个包含很多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
,根本不存在任何测量问题。
输出: