中治@豊橋です。

シェルの「test -z」のようなことを LaTeX2e でできませんか?

というのが質問の主旨です。以下に経緯を書きます。

先人から引き継いだ jLaTeX209 のころのスタイルファイルを使ってサブネットの
機器一覧表を作っています。どうせなら、この表を HTML にしておいてもいいじゃ
ないかと思ったのですが、latex2html はこのスタイルファイルを解してくれず、
picure 環境で書かれた表を png にしてくれました。

そこで、

\AtBeginDocument{%
  \global\newwrite\@titlefile \gdef\@titlename{\jobname.html }%
  \immediate\openout\@titlefile\@titlename
  \immediate\write\@titlefile{%
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
    <HTML>
    <HEAD>
    <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=euc-jp">
    <TITLE>サブネット内接続機器一覧</TITLE>
    </head>
    <h1>サブネット内接続機器一覧</h1>
    <table cols=5 border=1>
    <COLGROUP>
    <COL WIDTH="15\%" align=center valign=middle>
    <COL WIDTH="15\%" align=center valign=middle>
    <COL WIDTH="15\%" align=center valign=middle>
    <COL WIDTH="15\%" align=center valign=middle>
    <COL WIDTH="40\%" align=center valign=middle>
    </COLGROUP>
    <tr>
    <td>ホスト名</td>
    <td>IPアドレス</td>
    <td>設置場所</td>
    <td>イーサネットアドレス</td>
    <td>接続機器名(OS名)</td>
    </tr>
  }}

\newcommand{\putlist}[6]{%
  \immediate\write\@titlefile{%
    <tr>
    <td> #1</td>
    <td> #2</td>
    <td>#5</td>
    <td>#6</td>
    <td> #3 (#4)</td>
    </tr>
    }
  \begin{picture}(178,25.2)(-29,61.8)
    \put(22.5,17){\makebox(38,5)[cm]{\Large \bf #1}}
    \put(89,17){\makebox(55,5)[cm]  {\large \bf #2}}
    \put(44,6.5){\makebox(100,5)[lt]{\large #3}}
    \put(44,8.5){\makebox(100,5)[rb]{\large \sf (#4)}}
    \put(22.5,0){\makebox(38,5)[cm] {\large \bf #5}}
    \put(89,0){\makebox(55,4)[cm]   {\large \bf #6}}
  \end{picture}

  }

\AtEndDocument{%
  \immediate\write\@titlefile{%
    </table></html>
  }
}

という具合いにしてみたところ、それらしいのができたのですが、putlist 環境で
#4 が空だった場合にも「()」だけが出力されてしまい、これはブサイクです。

つまり、putlist 環境で、「#4 が空でなければ \write する」ようにしたいので
すが、どういう方法がありますか?

できあがった \jobname.html をエディタで編集するのは面倒なので、LaTeX2e で
できるとたいへんうれしいのです。
-- 
NAKAJI Hiroyuki (中治 弘行)