将计数转换为长度

将计数转换为长度

我想将长度减少一个数字(计数)。我尝试了一些 和 的变体\newlength{\temp}\addtolength但使用减号时出现了问题。我还尝试了 的变体\dimexpr

以下示例是绝对 MWE。temp 必须可能为负数。数学运算必须是减法。最初我\expandafter在其中加了一些 s,但它们可能是错误的,并且会破坏可读性。

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\makeatletter

\begin{document}

\newcount\temp
\temp=-30

\def\haha#1{xyz \hspace{\advance\strip@pt#1 by -\temp pt} abc}

\haha{90pt}

\end{document}

输出应该是

xyz-hspace60pt-abc

答案1

以下可实现您所追求的目标:

在此处输入图片描述

\documentclass{article}

\begin{document}

\newcounter{temp}
\setcounter{temp}{-30}

\newcommand{\haha}[1]{xyz-\hspace{\dimexpr#1+\value{temp} pt}-abc}

\haha{90pt}

xyz-\hspace{60pt}-abc% verification

\end{document}

我已经使用了 LaTeX2e 计数器接口,并\value{<cntr>}返回了计数器的数字<cntr>

相关内容