类似 \hspace 的命令计算距行首的距离

类似 \hspace 的命令计算距行首的距离

我想在 中放置几个​​文本块one line,但根据与行首的距离来固定它们的位置。例如

(1.2pt from beginning) cat (2.1pt from beginning) dog (2.9pt from beginning) bird

\hspace不起作用,因为它固定了与最后一个单词末尾的距离。是否有命令可以固定与行首的距离?如果单词太长或彼此太近,它们应该重叠。

答案1

tabto包可满足您的要求。如果\tabto需要向左制表符,它将发出换行符,除非您使用调用\tabto*。下面,我展示了\tabto带有和不带有*变体的连续 。

请注意,输出中两个版本之间会出现一个空白行,因为\tabto{1.2pt}cat相对于\parindent值而言,是一个向左的制表符(因此插入了换行符)。如果我\noindent在调用之前添加了一个,就不会出现空白行。

\documentclass{article}
\usepackage{tabto}
\begin{document}
\tabto*{1.2pt}cat
\tabto*{2.1pt}dog
\tabto*{2.9pt}bird

\tabto{1.2pt}cat
\tabto{2.1pt}dog
\tabto{2.9pt}bird
\end{document}

在此处输入图片描述

答案2

tabbing

\documentclass{article}

\begin{document}
\noindent\vrule height2pt depth 2pt\hrulefill\vrule % to show the line width

\begin{tabbing}
\=\hspace{10pt}\=\hspace{10pt}\=\hspace{10pt}\=\kill
\>\> cat \> dog \> bird \\
\end{tabbing}
\end{document}

在此处输入图片描述

我拒绝以太窄的距离来显示结果。

您可以指定距离左边距的环境,并且不需要起始\>\>

\documentclass{article}

\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentEnvironment{ftabbing}{m}
 {
  \marioscool_set_distances:n { #1 }
  \begin{tabbing}
  \tl_use:N \l__marioscool_preamble_tl
 }
 {
  \end{tabbing}
 }

\tl_new:N \l__marioscool_preamble_tl
\dim_new:N \l__marioscool_distance_dim

\cs_new_protected:Npn \marioscool_set_distances:n #1
 {
  \tl_clear:N \l__marioscool_preamble_tl
  \dim_zero:N \l__marioscool_distance_dim
  \clist_map_inline:nn { #1 }
   {
    \tl_put_right:Nx \l__marioscool_preamble_tl
     {
      \exp_not:n { \=\hspace } { \dim_eval:n { ##1 - \l__marioscool_distance_dim } }
     }
    \dim_add:Nn \l__marioscool_distance_dim { ##1 }
   }
  \tl_put_right:Nn \l__marioscool_preamble_tl { \=\+\+\kill }
 }
\ExplSyntaxOff

\begin{document}
\noindent\vrule height2pt depth 2pt\hrulefill\vrule % to show the line width

% this one is for comparison
\begin{tabbing}
\=\hspace{10pt}\=\hspace{10pt}\=\hspace{10pt}\=\kill
\>\> cat \> dog \> bird \\
\end{tabbing}

\begin{ftabbing}{10pt,20pt,40pt}
cat \> dog \> bird \\
AAA \> BBB \> CCC \\
\end{ftabbing}

\end{document}

在此处输入图片描述

答案3

\documentclass{article}

\usepackage{picture}

\begin{document}

\noindent
\begin{picture}(0,0)
\put(1.2pt,0){cat}
\put(2.1pt,0){dog}
\put(2.9pt,0){bird}
\end{picture}

\end{document}

答案4

这是一个可能的解决方案。请注意,您的水平空间太短。我用其他单位做了一个示例,只是为了更好地展示输出。

黑线是文本区域的左边距和上边距,由 产生\usepackage[showframe]{geometry}

平均能量损失

\documentclass{report}
\usepackage[showframe]{geometry}

\begin{document}

\noindent%
\rlap{\hspace*{1.2pt}cat}%
\rlap{\hspace*{2.1pt}dog}%
\rlap{\hspace*{2.9pt}bird}

\noindent%
\rlap{\hspace*{1.2ex}cat}%
\rlap{\hspace*{2.1ex}dog}%
\rlap{\hspace*{2.9ex}bird}
\end{document}

在此处输入图片描述

相关内容