\tabto 再次跳到新行

\tabto 再次跳到新行

我正在寻找一种方法来修改我的 tabto 命令,这样如果文本太长而无法放在一行中,文本将在新行中再次制表。

\documentclass[a4paper, 12pt, twosides, openany, liststotoc]{scrbook}

\usepackage{tabto}
\usepackage{lipsum}

\newcommand*{\mytab}{\tabto{4.5cm}}

\begin{document}

    \begin{itemize}
        \item One \mytab{\lipsum[4]}
        \item Two \mytab{\lipsum[4]}
    \end{itemize}

\end{document}

感谢问候`

答案1

与其尝试仅使用 来执行此操作tabto,不如引入\parbox。然后您只需要知道所涉及的宽度即可定义 的宽度\parbox

但是,这种tabto方法不会跨页面边界破坏项目。

最好放弃tabto并使用enumitem 来实现相同的目的,因为它将跨越页面边界。

在下面的 MWE 中,我tabto对项目“一”使用了方法,enumitem对项目“二”使用了方法。

\documentclass[a4paper, 12pt, twosides, openany, liststotoc]{scrbook}

\usepackage{tabto,enumitem}
\usepackage{lipsum}

\newcommand*{\mytab}[1]{\tabto{4.5cm}\parbox[t]{%
  \dimexpr\textwidth-4.5cm-\labelwidth-\labelsep}{#1}}
\begin{document}

    \begin{itemize}
        \item One \mytab{The \texttt{tabto} way  that will not
              break across page boundaries. \lipsum[4]}
        \item Two 
          \vspace{\dimexpr-\baselineskip-\parskip}
          \begin{itemize}[label=,leftmargin=4.5cm,topsep=0pt]
          \item The \texttt{enumitem} way that will break across
                page boundaries. \lipsum[4-7]
          \end{itemize}
    \end{itemize}

\lipsum[3]

\end{document}

在此处输入图片描述

在此处输入图片描述

相关内容