我在 TeX 文档中发现了以下命令:
$$ u_n \hbox to 0pt{\hskip 3mm$/$\hss} \longrightarrow 0 $$
我不明白它们到底起什么作用以及如何使用它们(我所能理解的是,它允许将一些文本放在其他文本之上)。
\hbox to 0pt
和{\hskip 3mm$/$\hss}
有某种关联吗?\hbox to 0pt
到底有什么用处 (它有什么用途) 以及 是什么? 它们是LaTeX 默认安装的{\hskip 3mm$/$\hss}
某种命令列表的一部分吗?\hsomething
答案1
\hbox to <len>{<stuff>}
在宽度为 的水平线<stuff>
内设置。如果是(或小于 的宽度),内容将开始与周围元素重叠。(水平线拉伸/收缩)可用于更改水平框内的对齐方式。h
box
<len>
<len>
0pt
<stuff>
\hss
h
s
s
TeX 引入了一些、和\hbox to 0pt{<stuff with \hss>}
形式的简写,而在 LaTeX 中您可以使用更熟悉的:\clap
\llap
\rlap
\makebox[0pt][<align>]{<stuff>}
\documentclass{article}
\usepackage{amsmath,array}
\begin{document}
\begin{tabular}{ l @{\qquad} >{$\lvert$}c<{$\rvert$} }
\verb|\hbox to 0pt{abc}| & \hbox to 0pt{abc} \\ % right overlap
\verb|\hbox to 0pt{\hss abc\hss}| & \hbox to 0pt{\hss abc\hss} \\ % center overlap
\verb|\hbox to 0pt{abc\hss}| & \hbox to 0pt{abc\hss} \\ % right overlap
\verb|\hbox to 0pt{\hss abc}| & \hbox to 0pt{\hss abc} \\ % left overlap
\verb|\clap{abc}| & \clap{abc} \\ % center overlap
\verb|\llap{abc}| & \llap{abc} \\ % left overlap
\verb|\rlap{abc}| & \rlap{abc} \\ % right overlap
\verb|\makebox[0pt]{abc}| & \makebox[0pt]{abc} \\ % center overlap
\verb|\makebox[0pt][c]{abc}| & \makebox[0pt][c]{abc} \\ % center overlap (equivalent to \makebox[0pt]{abc})
\verb|\makebox[0pt][l]{abc}| & \makebox[0pt][l]{abc} \\ % right overlap
\verb|\makebox[0pt][r]{abc}| & \makebox[0pt][r]{abc} % left overlap
\end{tabular}
\end{document}
从技术上讲,\hss
定义为“相当于
\hskip 0cm plus 1fil minus 1fil
”的“水平跳跃”,其“吸收参数的任何正或负宽度”。 (取自TeX 按主题分类)。
答案2
只是出于学术兴趣。
\hbox to 0pt{...}
创建一个宽度为零的盒子。但是,这会产生一个溢出的盒子,除非盒子内部有无限收缩的粘连,该 hack 的作者将其提供为\hss
,这相当于
\hskip 0pt plus 1fil minus 1fil
因此具有足够的收缩性,框中的文本将贴在右侧。文本是向右移动 3 毫米的斜线。
输出似乎正确,但这只是偶然的,如果在内联数学中使用,斜线的位置可能会偏离。
一个稍微好一点的代码可以产生一个看似正确的符号,并且不会受到上述问题的影响,那就是
$$ u_n \mathrel{\hbox to 0pt{\hskip 2mm$/$\hss}}\longrightarrow 0 $$
(当然,假设是纯 TeX)。
在 LaTeX 中你可以做得更好。
\documentclass{article}
\usepackage{amsmath}
\usepackage{centernot}
\begin{document}
\[
u_n \centernot\longrightarrow 0
\]
\end{document}