我正在将数据中的图形插入到 csv 文件中,由于输入延迟,我必须删除前导空格和尾随空格。它与软件包配合得很好trimspaces
。
\documentclass{article}
\usepackage{expl3,graphicx}
\usepackage{trimspaces}
\begin{document}
\def\testA{example-image-a }
%\includegraphics{\testA} %error
\def\testB{ example-image-a}
%\includegraphics{\testB} %error
\makeatletter
\trim@spaces@in\testA
\includegraphics{\testA}
\trim@spaces@in\testB
\includegraphics{\testB}
\end{document}
出于好奇,我尝试使用 和 来实现这一点expl3
,\tl_trim_spaces:n
但没有找到一种合理的方法来存储命令内容而不在命令中使用空格。有人知道怎么做吗?
答案1
有两种方法。第一种方法是将其用\trimspaces
在宏前面;第二种方法是“规范化”宏,以删除前导空格和尾随空格。
\documentclass{article}
\usepackage{xparse,graphicx}
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\trimspaces}{m}
{
\tl_trim_spaces:V #1
}
\cs_generate_variant:Nn \tl_trim_spaces:n { V }
\NewDocumentCommand{\normalize}{m}
{
\tl_trim_spaces:N #1
}
\ExplSyntaxOff
\begin{document}
\def\testA{example-image-a }
\def\testB{ example-image-a}
\includegraphics[width=4cm]{\trimspaces\testA}
\includegraphics[width=4cm]{\trimspaces\testB}
\normalize{\testA}\normalize{\testB}
\includegraphics[width=4cm]{\testA}
\includegraphics[width=4cm]{\testB}
\end{document}