如何在两个文本之间填充点?(点与文本中心对齐)

如何在两个文本之间填充点?(点与文本中心对齐)
\documentclass{article}
\usepackage{enumitem}
\begin{document}

\begin{enumerate}[align=parleft]
  \item[2.1] An example \dotfill 21
  \item[2.2] A longer example like this such that the line wraps down to the next line and the last entry gets wrapped to the next line \dotfill 22
  \item[2.31] Another example \dotfill 132
\end{enumerate}

\end{document}

我使用“\dotfill”,但点与文本底部对齐。

在此处输入图片描述

答案1

\cdotfill为此使用了一个命令:

\documentclass{article}
\usepackage{enumitem}
\makeatletter
\newcommand\cdotfill{%
    \leavevmode\cleaders\hb@[email protected]{\hss$\cdot$\hss}\hfill\kern\z@
}
\makeatother
\begin{document}
\begin{enumerate}[align=parleft]
  \item[2.1] An example \cdotfill 21
  \item[2.2] A longer example like this such that the line wraps down to the next line and the last entry gets wrapped to the next line \ddotfill 22
  \item[2.31] Another example \ddotfill 132
\end{enumerate}

\end{document}

输出:

输出

这是你想要的吗?

编辑:稍微解释一下该命令,以便你可以尝试一下:

  • \leavevmode确保启用水平模式,因此它不会垂直堆叠框(“离开垂直模式”)
  • \cleaders表示将重复执行以下语句,直到达到某个跳过位置
  • \hb@xt@是 TeX 基元的缩写\hbox to,定义给定长度的水平框(在本例中为.44em
  • {\hss$\cdot$\hss}是 hbox 内的对象,其中\hss是可以占用任意长度的水平空间
  • \hfill是 的第二个参数\cleaders。它表示“填充整个左侧空间”,并且由于它是在 的上下文中使用的\cleaders,因此整个左侧空间会重复用框填充。
  • \kern\z@确定在数字前添加的空格,其中\z@是 TeX 原语0pt(因此当前没有添加空格,\kern仅表示固定宽度的水平空间。

答案2

基于 Jaytar 的精彩答案,您可能希望避免在右边距换行。

但是,我见过的所有引导点都在基线上。使用这种基于宏的方法,您只需更改 的定义即可更改引导点\toclikeentry

\documentclass{article}
\usepackage{enumitem}
\usepackage{etoolbox}

\usepackage{showframe} % just for the example

\let\cdotfill\dotfill
\patchcmd{\cdotfill}
  {\hss.\hss}
  {\hss\textperiodcentered\hss}
  {}{}
\newcommand{\changerightskip}{%
  \setlength{\rightskip}{3em}%
  \setlength{\parfillskip}{-3em}%
}
\newlist{toclikeI}{enumerate}{1}
\setlist[toclikeI]{align=parleft}
\newenvironment{toclike}{\toclikeI\changerightskip}{\endtoclikeI}
\newcommand{\toclikeentry}[3]{\item[#1]#2\cdotfill#3}

\begin{document}

\begin{toclike}%\changerightskip

\toclikeentry{2.1}{An example}{21}

\toclikeentry{2.2}{%
  A longer example like this such that the line
  wraps down to the next line and the last entry
  gets wrapped to the next line}{22}

\toclikeentry{2.31}{Another example}{132}

\end{toclike}

\end{document}

在此处输入图片描述

相关内容