![将 \widthof 的负数插入到 \hspace 中而不定义新长度](https://linux22.com/image/315997/%E5%B0%86%20%5Cwidthof%20%E7%9A%84%E8%B4%9F%E6%95%B0%E6%8F%92%E5%85%A5%E5%88%B0%20%5Chspace%20%E4%B8%AD%E8%80%8C%E4%B8%8D%E5%AE%9A%E4%B9%89%E6%96%B0%E9%95%BF%E5%BA%A6.png)
遵循 MWE 不起作用:
\documentclass{article}
\usepackage{calc}
\newlength{\charwidth}
\setlength{\charwidth}{\widthof{$-$}}
\begin{document}
\centering $\infty$
\centering \hspace{-\charwidth}$-\infty$
\centering \hspace{-\widthof{$-$}}$-\infty$
\end{document}
\hspace{-\widthof{$-$}}
引发以下错误
! Missing number, treated as zero. <to be read again> \widthof l.10 \centering \hspace{-\widthof{$-$}} $-\infty$ ?
是否有可能在不定义新长度的情况\widthof
下插入负数?\hspace
答案1
此答案在 TexLive 2019 和 2013 中有效,但在 2016 中无效。使用时请自负风险。
我只是调整了@DavidCarlisle 的答案。-widthof{$-$}
我没有直接定义,而是从零中减去它0pt-widthof{$-$}
(结果应该相同;))
\width_
以下是从命令 中获取负长度的方法\setlength{\dimen0}{0pt-\widthof{$-$}}\hspace{\dimen0}
所以你的代码看起来像这样
\documentclass{article}
\usepackage{calc}
\newlength{\charwidth}
\setlength{\charwidth}{\widthof{$-$}}
\begin{document}
\centering $\infty$
\centering \hspace{-\charwidth}$-\infty$
\centering \setlength{\dimen0}{0pt-\widthof{$-$}}\hspace{\dimen0}$-\infty$
\end{document}
从技术上来说,正如 David 指出的那样,虽然使用了临时寄存器,但并没有定义新的长度。
上帝保佑你们。
版本:添加了结果图像