Texの\newtheoremstyleのカンペと囲みつきの定理環境をつくりたい


upLaTexで定理環境には囲みがない

最近LaTexで論文を書いているのですが, amsthm.styで定理環境を定義しました。これに囲みを付けたくなったけど,使うパッケージの数を増やしたくなかったので自分で\newtheoremstyleに近い形でマクロを組んでみた話です.

まずは\newtheoremstyleがどうなっているか

\documentclass{jsarticle}
\usepackage{amsthm}
%%%%%%%%%%%%%%%%%%%%%%定理環境の設定%%%%%%%%%%%%%%%%%%%%%%
\newtheoremstyle{hoge}% スタイルの名前
{5pt}% 環境の上のスペース
{5pt}% 環境の下のスペース
{\normalfont}% 環境内のフォント
{0pt}% 題名前のスペースするか
{\bfseries}% 題名のフォント
{\\}% 題名の後の操作など
{4pt}% 題名の後にどの程度スペースを挿入するか↑のように改行すると意味がなくなります
{\thmname{#1}~\thmnumber{#2}\thmnote{\hspace{4pt}#3}}% 題名の書式
%#1:共通の表題:「定理」など%#2 カウンタの値が入る%#3 表題
%%%%%%%%%%%%%%%%%%%%%%定理環境を作る%%%%%%%%%%%%%%%%%%%%%%
\theoremstyle{hoge} %使うスタイルの名前を指定
\newtheorem{hhong}{\#1(共通の表題:「定理」など)}
\begin{document}
あああああああああああああああああああああああああああ
あああああああああああああああああああああああああああ
\begin{hhong}[\#3(表題)]
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
\end{hhong}
いいいいいいいいいいいいいいいいいいいいいいいいいいい
いいいいいいいいいいいいいいいいいいいいいいいいいいい
\end{document}

などとファイルを作った場合の出力.↓

どこで定理環境が終わったのかもっとわかりやすくしたい.

これと近い形で囲み付きの環境を作りたい

そこで次のような自分の定理環境を作った.

  1. 自動で共通の表題がつく(#1部分).
  2. 自動でその環境がいくつかカウントしてくれる.
  3. 新しい環境を簡単に定義できてある程度カスタマイズできる.
\documentclass{jsarticle}
\usepackage{ascmac}
%%%%%%%%%%%%%%%%%%%%%%自分の定理環境を作る%%%%%%%%%%%%%%%%%%%%
\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%mynewtheoremstyle%%%%%%%%%%%%%%%%%%%%
\newcommand{\mynewtheoremstyle}[7]{
  \global\@namedef{@#1/1}{#1}
  \global\@namedef{@#1/2}{#2}
  \global\@namedef{@#1/3}{#3}
  \global\@namedef{@#1/4}{#4}
  \global\@namedef{@#1/5}{#5}
  \global\@namedef{@#1/6}{#6}
  %\global\@namedef{@#1/7}{#7} 
  \global\@namedef{@#1/8}{#7}
}
%%%mytheoremstyleで指定した値は疑似配列をつかって保存する
%%%%%%%%%%%%%%%%%%%%%%%%%%環境定義%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\mytheoremstyle}[1]{
\@namedef{@mystyle}{\@nameuse{@#1/1}}
}
%%%%%%%%%%%%%%mytheoremstyleで作ったスタイルを設定する
%%%%%%%%%%%%%%%%%%%%%デフォルトの設定を決定%%%%%%%%%%%%%%%%%%%%%
\@namedef{@mydefo/1}{mydefo}
\@namedef{@mydefo/2}{5pt}
\@namedef{@mydefo/3}{5pt}
\@namedef{@mydefo/4}{\normalfont}
\@namedef{@mydefo/5}{0pt}
\@namedef{@mydefo/6}{\bfseries}
%\@namedef{@mystyle/7}{}
\@namedef{@mydefo/8}{0pt}
%%%%%%%%%%%%%%%%%%%%%デフォルトの値を指定する
\mytheoremstyle{mydefo}
%%%%%%%%%%%%%%%%%%%%%%thoremstyleを設定%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\mynewtheorem}[3][mydefo]{
\newcounter{@#2/cnt}
\setcounter{@#2/cnt}{0}
\global\newenvironment{#2}[1][\relax]{
\refstepcounter{@#2/cnt}
\vspace{\@nameuse{@#1/2}}
\@nameuse{@#1/4}
\begin{itembox}[l]{
\hspace{\@nameuse{@#1/5}}
\@nameuse{@#1/6} {#3 \arabic{@#2/cnt}}  
##1
%\@nameuse {@#1/7}
 \hspace{\@nameuse{@#1/8}}}
}
{\end{itembox}\vspace{\@nameuse{@#1/3}}}
}
%%%%%%%%%%%%%%itemboxを使って囲みのmythorem環境を作る新しいコマンド
\makeatother
%%%%%%%%%%%%%%%%%%%定理環境を作る%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\mynewtheoremstyle{hoge}{%スタイルの名前
20pt}{%環境の上のスペース
20pt}{%環境の下のスペース
\normalfont}{%定理環境内のフォント
100pt}{%題名前のスペース
\bfseries}{%題名のフォント
100pt}%題名の後のスペース
\mytheoremstyle{hoge}
\mynewtheorem[hoge]{hhhong}{問題}%オプションでスタイルを指定する必要がある
\mynewtheorem{hhhhong}{論争}%デフォルトを使う場合は必要ない

以下ドキュメントの内容

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
いいいいいいいいいいいいいいいいいいいいいいいい
いいいいいいいいいいいいいいいいいいいいいいいい
\begin{hhhong}[大事件]
hhhong環境\\
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
\end{hhhong}
うううううううううううううううううううううううう
うううううううううううううううううううううううう
\begin{hhhhong}[重大事件]
hhhhong環境\\
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
\end{hhhhong}
ええええええええええええええええええええええええ
ええええええええええええええええええええええええ
\begin{hhhong}[橙事件]
hhhong環境\\
きちんとカウンタが増えている
表題の書式も引き継がれている
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
\end{hhhong}
おおおおおおおおおおおおおおおおおおおおおおおお
おおおおおおおおおおおおおおおおおおおおおおおお
\begin{hhhhong}[紅事件]
hhhhong環境\\
きちんとカウンタが増えている
表題の書式も引き継がれている
ooooooooooooooooooooooooooooooooooooooooooooooooo
\end{hhhhong}
かかかかかかかかかかかかかかかかかかかかかかかか
かかかかかかかかかかかかかかかかかかかかかかかか
\end{document}

もう少し近づけたい気もするが(表題部分のカスタマイズ#9部分)わからなかったのでとりあえずこれで満足することにした. もっと簡単に定義する方法が絶対あると思うので改善法を知っている人は教えてください.
さあ, これでばりばり論文を書こうと思ったら囲まない方がいいよと言われたのでこれはお蔵入りした.
出力↓