打印参数的最后空格

打印参数的最后空格

我想打印参数末尾的空格。

这是我的 M(not)WE。

\documentclass{article}

\newcommand\printspaceinarg[1]{%
    ]\texttt{#1}[%
}

\setlength\parindent{0em}


\begin{document}

\printspaceinarg{a     }

\printspaceinarg{ab    }

\printspaceinarg{abc   }

\printspaceinarg{abcd  }

\printspaceinarg{abcde }

\printspaceinarg{abcdef}

\end{document}

想要的输出如下。

]a     [

]ab    [

]abc   [

]abcd  [

]abcde [

]abcdef[

是否可能或者我必须更改我的宏的 API?

答案1

读取参数\obeyspaces时可以使用:#1

\def\printspaceinarg {\bgroup\obeyspaces\printspaceinargA}
\def\printspaceinargA #1{\egroup ]{\tt#1}[}

\printspaceinarg{a    }

\printspaceinarg{ab   }

\printspaceinarg{abc  }

\printspaceinarg{abcd }

\printspaceinarg{abcde}

答案2

我猜您想说明要填充的总长度,这比自己进行计算更好。

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\padto}{O{0}m}
 {
  ]
  \texttt
   {
    #2
    \prg_replicate:nn { \int_max:nn { #1 - \tl_count:n { #2 } } { 0 } } { ~ }
   }
  [
}
\ExplSyntaxOff

\begin{document}

\padto[6]{a}

\padto[6]{ab}

\padto[6]{abc}

\padto[6]{abcd}

\padto[6]{abcde}

\padto[6]{abcdef}

\padto{a}

\padto[2]{a}

\padto[2]{ab}

\end{document}

在此处输入图片描述

答案3

感谢 David Carlisle 的建议,我提出以下解决方案。

\documentclass{article}

\newcommand\printspaceinarg[2][0]{%
    ]\texttt{#2}\kern#1\fontcharwd\font`x[%
}

\setlength\parindent{0em}


\begin{document}

\printspaceinarg[5]{a}

\printspaceinarg[4]{ab}

\printspaceinarg[3]{abc}

\printspaceinarg[2]{abcd}

\printspaceinarg[1]{abcde}

\printspaceinarg   {abcdef}

\end{document}

相关内容