TeXの記憶(40) — 両端が丸いPSTricksの線を使ったボックス

またPSTricksのボックスの例です。

囲みや罫線のレイアウト指定で、どうしよう、と思うときはほとんどPSTricksを使っています。それでもだめならEPSを貼り込んでしまいます。
EPSを貼ってしまうと手抜きをしたような気になりますが、レイアウト通り印刷されれば組版の役目を果たすわけなので最短でできる方法ならば何でもいいのかもしれません。もちろんLaTeXじゃなくてもいいわけですが、それでも少し気になります。

作ったのは、両端が丸くなっている線を左に配置して、その右に項目を並べる、という例です。

0911

文字の項目をいったん\vboxの中に入れ、そのボックスの高さを測ったpstricksの領域を作り、ボックスの高さの線を左に引いて、右に文字のボックスを書き出す、という順番で行っています。

両端が丸い線のオプションがPSTricksにあったのかどうか分からないのですが、簡単にできそうなので自分で作りました。

手順は

  • 線の幅を直径とする下の円を描く
  • 円の中心線を上に描く
  • 線の上端を中心として円を描く

なのですが、線の幅と直径を同じにすると線のほうが太く見えてしまうので、直径をやや大きくしています。

項目の一覧を表示するのが目的ですから、\obeylinesを使って入力したときの改行が活きるように設定しました。

\usepackage{graphicx}
\usepackage{pstricks}
\usepackage{color}
...
\newbox\tmpBox
\newenvironment{sampleBox}
{\hsize=50mm\setbox\tmpBox=\vbox\bgroup\parindent=0pt\obeylines}
{\egroup
  \dimen0=\ht\tmpBox\advance\dimen0\dp\tmpBox
  \begin{pspicture}(0,0)(57.8mm,\dimen0)
  \pscircle[linestyle=none,fillstyle=solid,fillcolor=blue](0,0){1.5mm}
  \psline[linestyle=solid,linecolor=blue,linewidth=2.7mm](0,0)(0,\dimen0)
  \pscircle[linestyle=none,fillstyle=solid,fillcolor=blue](0,\dimen0){1.5mm}
  \rput[lb](4mm,0){\box\tmpBox}
  \end{pspicture}}
\begin{sampleBox}
クロック
カウンタ
シフトレジスタ
セレクタ
状態遷移
ステートマシン
\end{sampleBox}

コメント