![仅打印非空变量,带有条件标点](https://linux22.com/image/394523/%E4%BB%85%E6%89%93%E5%8D%B0%E9%9D%9E%E7%A9%BA%E5%8F%98%E9%87%8F%EF%BC%8C%E5%B8%A6%E6%9C%89%E6%9D%A1%E4%BB%B6%E6%A0%87%E7%82%B9.png)
我有几个变量。我需要打印那些不为空的变量。第一个打印的变量前面必须有一些文本。如果打印了多个变量,则必须用分号分隔它们;最后一个(或唯一的)变量后面必须跟一个句点。如果所有变量都是空的,则不会打印任何内容。
例如...
布拉: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}