仅打印非空变量,带有条件标点

仅打印非空变量,带有条件标点

我有几个变量。我需要打印那些不为空的变量。第一个打印的变量前面必须有一些文本。如果打印了多个变量,则必须用分号分隔它们;最后一个(或唯一的)变量后面必须跟一个句点。如果所有变量都是空的,则不会打印任何内容。

例如...

布拉:A;B;C。

别说:D;N;X;Y。

布拉:W。

我一直使用“\ifthenelse”和“\equal”来测试和打印变量,但我在嵌套中迷失了方向。有没有更好的方法来实现这一点,也许是一些外行人可以轻松使用的包,还是我必须努力解决嵌套问题?

答案1

你可以做类似的事情

在此处输入图片描述

\documentclass{article}


\def\z{\ifhmode\ifnum\lastnodetype=0\hbox{;} \fi\fi}
\long\def\zstop{\ifhmode\unskip\setbox0\lastbox.\par\fi}


\begin{document}

{\everypar{Blah: }

\def\A{A}\def\B{B}\def\C{C}\def\D{}\def\N{}\def\W{}\def\X{}\def\Y{}\def\Z{}
\z\A\z\B\z\C\z\D\z\N\z\W\z\X\z\Y\z\Z\zstop

\def\A{}\def\B{}\def\C{}\def\D{D}\def\N{N}\def\W{}\def\X{X}\def\Y{Y}\def\Z{}
\z\A\z\B\z\C\z\D\z\N\z\W\z\X\z\Y\z\Z\zstop


\def\A{}\def\B{}\def\C{}\def\D{}\def\N{}\def\W{W}\def\X{}\def\Y{}\def\Z{}
\z\A\z\B\z\C\z\D\z\N\z\W\z\X\z\Y\z\Z\zstop


\def\A{}\def\B{}\def\C{}\def\D{}\def\N{}\def\W{}\def\X{}\def\Y{}\def\Z{}
\z\A\z\B\z\C\z\D\z\N\z\W\z\X\z\Y\z\Z\zstop

}

\end{document}

相关内容