使用 expl3 修剪宏中的空格

使用 expl3 修剪宏中的空格

我正在将数据中的图形插入到 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}

在此处输入图片描述

相关内容