将 \widthof 的负数插入到 \hspace 中而不定义新长度

将 \widthof 的负数插入到 \hspace 中而不定义新长度

遵循 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 指出的那样,虽然使用了临时寄存器,但并没有定义新的长度。

上帝保佑你们。

版本:添加了结果图像

在此处输入图片描述

相关内容