我想在 中放置几个文本块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}