TeXの記憶(2) — 角丸の囲みを使った環境

前回、角丸の囲みマクロ「\Kadomaru」をpstricksで作ったので、これを利用した環境を作ってみることにします。

以下のような「例」の環境にしてみました。

img20120412

上の画像の2番目は「例1.2」の後に太字の見出しが入っています。

このタイプの見出しはあったり、なかったりすることがあるので、
オプション引数として使えるようにしてみました。
使い方は

%オプション引数のないとき
\begin{rei}
...

%オプション引数のあるとき
\begin{rei}[これは見出し]
...

で切り替えるようにします。

オプション引き数はLaTeXの環境コマンドの仕組みを利用して、引き数があるときはそのまま表示。ないときはデフォルトを「\empty」ということにして判断しています。

\newenvironment{rei}[1][\empty]{...
...
  \ifx#1\empty\else\space{\bf #1}\fi

「例」の後の1.1の数字は「章番号.順番」を自動で出しましょう。(章が必要なのでドキュメントクラス名はjsbookとしました。)章番号を自動的に出すためにカウンタも設定しています。

\newcounter{reicnt}[chapter]

環境の最後に「□」を置いてみました。これはAmSLaTeXの「amsthm」パッケージを使えば「\qed」で表示されますが、簡単なので「\QED」を作っちゃいましょう。シアン色60%の四角にします。

\newcommand{\QED}{\hfill{\textcolor{iro6}{\rule[-.3mm]{3mm}{3mm}}}}

これをrei環境の終わりに入れて自動的に表示させるようにしました。

以上全部をまとめたリストは以下のようになります。

\documentclass{jsbook}

\usepackage[dvips]{graphicx}
\usepackage{color}
\usepackage{pstricks}

\makeatletter

\definecolor{iro2}{cmyk}{0.2,0,0,0}
\definecolor{iro6}{cmyk}{0.6,0,0,0.}

\newcommand{\Kadomaru}[1]{%
  \setbox0=\hbox{#1}\dimen0=\wd0
  \advance\dimen0 0.6em
  \begin{pspicture}(0,0)(\dimen0,1.3zh)
  \psframe[linecolor=black,linewidth=0.2mm,cornersize=absolute,linearc=0.15,
  fillstyle=solid,fillcolor=iro2]
  (0,1.3zh)(\dimen0,-0.2zh)
  \rput[lb](1mm,0mm){#1}
  \end{pspicture}}

\newcommand{\QED}{\hfill{\textcolor{iro6}{\rule[-.3mm]{3mm}{3mm}}}}

\newcounter{reicnt}[chapter]

\newenvironment{rei}[1][\empty]{\par\noindent
  \stepcounter{reicnt}%
  \Kadomaru{\bf 例\thechapter.\arabic{reicnt}}%
  \ifx#1\empty\else\space{\bf #1}\fi
  \hskip.9zw}
{\hfill\QED}

\makeatother

\begin{document}

%\chapterコマンドの代わり
\setcounter{chapter}{1}

\begin{rei}
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
\end{rei}

\begin{rei}[見出し]
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
\end{rei}

\end{document}

コメント

  1. […] ← TeXの記憶(2) — 角丸の囲みを使った環境 […]