连接宏参数和字符串会增加不必要的空格

连接宏参数和字符串会增加不必要的空格

我想要定义一个如下所示的简单宏:

\newcommand{\testcommand}[1]{
    \includegraphics[]{pictures/#1.jpeg}
}

但这不起作用,因为它在参数#1.jpeg!之间添加了一个空格。
例如:因为文件名为 ,所以\testcommand{figure}出现错误。File `pictures/figure .jpeg' not foundfigure.jpeg

有没有办法修复这个问题而不必在文件名中添加空格?

非常感谢您的回复。

答案1

您的定义中有两个不需要的空格:

\newcommand{\testcommand}[1]{% <--- here
    \includegraphics[]{pictures/#1.jpeg}% <--- here
}

行尾始终算作空格。另一方面,行首的空格(和制表符)会被忽略。

如果你还输入

\testcommand{figure
    }

您添加另一个空格。

定义中的两个不需要的空格只会影响文档中的间距,而调用中的空格会影响文件名,因为它与您调用的相同

\textcommand{figure }

}但是,正如您所认为的那样,空格并非来自 之前的空格或制表符,而是来自 之后的结束行figure

由于 TeX 是一种排版系统,它显然对空格很敏感,因为它们是印刷文本的重要组成部分。

重要参考:

行尾的百分号 (%) 有什么用?(为什么我的宏会产生额外的空间?)

在 \newcommand 或类似命令中,在行尾添加百分号什么时候有害

答案2

原来我写了一个新行:

\testcommand{figure
    }

因此,该空格是一个制表符!

相关内容