TeXの記憶(14)—PSTricksで角の丸い囲みを作る

PSTricksで角の丸い囲みを作ってみました。もともと用意されているオプションを利用するだけなので作業は簡単です。

pstricksで必要なオプションは2つでです。

\psframe[linearc=.35,cornersize=absolute ...

\linearc=.35は角の丸み。cornersize=absoluteを指定すると、囲みの大きさが変化しても同じ丸みになります。

0815-2

その代わりに

\psframe[framearc=0.7,cornersize=relative ...

のようにすると囲みの大きさに合わせて角の丸みもrelativeに変化します
(分かりやすいように0.7にしました)。

0815-1

出版物ではcornersize=absoluteが好まれると思います。というかこれしか使ったことがありません。

\documentclass[draft]{jsbook}

\usepackage{color}
\usepackage{pstricks}

\makeatletter

% 囲みの罫線の色
\definecolor{iro1}{cmyk}{1,1,0,0}
% 囲みの内側の色
\definecolor{iro2}{cmyk}{0.1,0,0,0}

% 準備する変数など
\newbox\Box@box       % 中身を入れる箱
\newdimen\Box@rule@wd % ワクの幅
\newdimen\Box@Hsep    % ワクから中身までの水平距離
\newdimen\Box@VTsep   % ワク上部から中身までの距離
\newdimen\Box@VBsep   % ワク下部から中身までの距離
\newdimen\Box@OVTsep  % 上の行からワク上部までの距離
\newdimen\Box@OVBsep  % ワク下部から下の行まで距離
\newdimen\Box@ht  % 中身の高さ
\newdimen\Box@wd  % 中身の深さ
% 保存する値
\newdimen\keephsize
\newdimen\keeplinewidth

%     #1 左右のアキ
%     #2 ワクの幅
%     #3 ワクの色
%     #4 中身の色
%     #5 上のアキ(ワク内)
%     #6 下のアキ(ワク内)
%     #7 上のアキ(ワク外)
%     #8 下のアキ(ワク外)
%    \begin{macrocode}
\def\BoxRarc{.35}
\def\BoxR#1#2#3#4#5#6#7#8{\par\vskip#7
  \Box@Hsep=#1
  \Box@rule@wd=#2
  \def\Box@rulecolor{#3}%
  \def\Box@color{#4}%
  \Box@VTsep=#5
  \Box@VBsep=#6
  \Box@OVBsep=#8
  % 箱の全体の幅から,アキと罫線の幅を引く
  \Box@wd=\linewidth
  \advance\Box@wd -2\Box@rule@wd
  \advance\Box@wd -2\Box@Hsep
  % 元の値を保存
  \keephsize=\hsize
  \keeplinewidth=\linewidth
  \hsize=\Box@wd \parindent=\z@
  \linewidth=\hsize
  % 箱を作る
  \setbox\Box@box=\vbox\bgroup\parindent=1zw}
\def\endBoxR{%
  \egroup
  % 値の復元
  \hsize=\keephsize
  \linewidth=\keeplinewidth
  % 箱の高さ = 中身+アキ
  \Box@ht=\ht\Box@box \advance\Box@ht \dp\Box@box
  \advance\Box@ht \Box@VTsep \advance\Box@ht \Box@VBsep
  % 描画
  \begin{pspicture}(0,0)(\linewidth,\Box@ht)
    \psframe[linearc=\BoxRarc,cornersize=absolute,linestyle=solid,linecolor=\Box@rulecolor,
    linewidth=\Box@rule@wd,fillstyle=solid,fillcolor=\Box@color]
    (0,0)(\linewidth,\Box@ht)
    % 中身
    \advance\Box@VBsep -0.1mm % ワク内最下行とケイとのアキの補正
    \rput[lb](\Box@Hsep,\Box@VBsep){\box\Box@box}
  \end{pspicture}\vskip\Box@OVBsep}

\makeatother

\def\waku{\BoxR{1zw}{.6mm}{iro1}{iro2}{3mm}{3mm}{4mm}{0mm}}
\def\endwaku{\endBoxR}

\begin{document}

\begin{waku}
○○○○○○○○○○○○○○○○
\end{waku}

\end{document}

 

TeXの記憶(15) ---PSTricksで見出し付きの囲みを作る(2)
TeXの記憶(13) ---PSTricksで見出し付きの囲みを作るで作った枠のマクロを土台に見出しだけ加工してみました。 もともとはこんな感じです。 元のマクロ(BoxST)はそのままですが、見出しの引き数とし...

コメント