我想打印参数末尾的空格。
这是我的 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}