为什么使用 \newcommand 和 \setlength 时会插入这个空格?

为什么使用 \newcommand 和 \setlength 时会插入这个空格?

我正在尝试调试\newcommand我正在研究的一些宏,我已经将其归结为这个最小示例。它所做的只是定义两个长度,然后设置它们的值 - 它不会将它们用于任何事情。

\documentclass{article}

\newlength{\xscale}
\newlength{\yscale}

\newcommand{\setscale}[2] {
    \setlength{\xscale}{#1}
    \setlength{\yscale}{#2}
}

\newcommand{\mystyle} {
    \setscale{0.25cm}{0.18cm}
}

\begin{document}

foo, \mystyle%
bar

foo, \setlength{\xscale}{0.25cm}\setlength{\yscale}{0.18cm}%
bar

\end{document}

输出如下所示:

在此处输入图片描述

\setlength为什么当我将命令包装在 内时会插入大空格\newcommand,而不包装时则不会?我该如何定义这些命令,以便它们设置长度而不在文档中插入额外空间?

答案1

以下是部分自我回答。如果我将定义\mystyle改为

\newcommand{\mystyle} {
    \setlength{\xscale}{0.25cm}
    \setlength{\yscale}{0.18cm}
}

那么我仍然会遇到这个问题,但如果我将其更改为

\newcommand{\mystyle} {%
    \setlength{\xscale}{0.25cm}%
    \setlength{\yscale}{0.18cm}%
}

然后它就消失了。所以它与我的宏代码中的换行符有关。我想,我试图编写布局合理的代码,这对我来说是值得的。

相关内容