【LaTeX】証明・定理などの環境の自作

今まで、上のサイトを参考にしたボックスを使ってきていました。

羽さんのノートを見て、作り直しました。この環境は、全てナンバリング可能、ナンバリングなしも可能(環境名の後ろに*をつける)、参照可能(参照機能を使うには、コメントアウトした\threfなどのコメントアウトを解除してください)、題名をつけることが可能、ボックス末尾に記号を自由に付け加えること可能 のような改造を施しました。
コメントアウトで「タイトルの後ろの記号」とか色々書いてるけど、「これで一応実現できてる」ってだけで、本当にそれを想定しているコマンドなのかは知りません。英語を読めないため、マニュアルに書いてあることをちゃんと理解できていないので。

また、LuaLaTeXが前提です。たぶんluaじゃなくても\zwをzwにすれば使える気がする

普段は自作したスタイルファイルに分割して、それらを組み合わせて使ってるのでもしかしたらこれだけで動かないかもしれないですが、多分大丈夫です。

 %color 
 \definecolor{thmcolor}{rgb}{0.3, 0.0, 0.03}
    \definecolor{backbasecolor}{HTML}{E1E1E1}

    %Theorem

    %Proposition

    %Corollary

    %Definition
    \definecolor{defcolor}{HTML}{00A0E9}

    %Lemma
    \definecolor{lemcolor}{HTML}{259F94}

    %Example
    \definecolor{excolor}{rgb}{0.21, 0.27, 0.31}

    %remark
    \definecolor{recolor}{HTML}{F0D3FF}


%? ボックステンプレ mytheo 
\tcbset{mytheo/.style={fonttitle=\gtfamily\sffamily\bfseries\upshape,enhanced,colframe=red!30!white,colback=thmcolor!2!backbasecolor,colbacktitle=red!30!white,coltitle=black,boxrule=0pt,borderline south={2pt}{-2pt}{red!50!white},left*=1\zw,right*=1\zw,theorem style=standard,breakable,sharp corners,
before skip=6pt,after skip=6pt, %ボックス上下の余白
top=1mm,bottom=1mm, %ボックス内本文上下の余白
before upper={\setlength{\parindent}{1\zw}},
before lower={\setlength{\parindent}{1\zw}}, 
separator sign={\ :},
description delimiters={《}{》},
description font=\mcfamily\mdseries
}}

%? ボックステンプレ tatebou
\tcbset{
tatebou/.style={
detach title,
fonttitle=\gtfamily\sffamily\bfseries\upshape,
coltitle=black,
before skip=6pt,after skip=6pt, %ボックス上下の余白
separator sign={\ }, %命題番号の後ろの記号
description delimiters={(}{)\ }, %タイトルをどういう記号で囲むか
after title={\ :\ \ }, %タイトルの後ろの記号
before upper={\tcbtitle \setlength{\parindent}{1\zw}},%本文開始前につける記号など
% after upper=\hfill\qed %ボックス末尾につける記号など
}
}  



    %*定理
            %? 大きめのボックス
    \newtcbtheorem[number within=subsection]{theorem}{定理}%
    {mytheo}{th}
            %? 省スペース
    \newtcbtheorem[use counter from=theorem]{smalltheorem}{定理}{
        tatebou,blanker,breakable,
        left=3mm,right=3mm,
        top=3mm,bottom=3mm,
        sharp corners,boxrule=0.6pt,
        % before skip=15pt,after skip=15pt,
        % borderline={0.5pt}{0pt}{black},
        % borderline={0.5pt}{1.5pt}{black},
        borderline={0.5pt}{-1.5pt}{red},
        borderline={2pt}{0pt}{red!50!white},
        % after upper=\hfill\square %ボックス末尾につける記号
	}{th}
    % \newcommand{\thref}[1]{{\bfseries\sffamily 定理 \ref{#1}}}

    %*命題
            %? 大きめのボックス
    \newtcbtheorem[use counter from=theorem]{prop}{命題}%
    {mytheo}{pr}
            %? 省スペース
    \newtcbtheorem[use counter from=theorem]{smallprop}{命題}{
        tatebou,blanker,breakable,
        left=3mm,right=3mm,
        top=3mm,bottom=3mm,
        % before skip=15pt,after skip=15pt,
        % borderline={0.5pt}{0pt}{black},
        borderline={1.5pt}{-0.5pt}{red!40!white},
        % after upper=\hfill\square %ボックス末尾につける記号
	}{pr}
    % \newcommand{\prref}[1]{{\bfseries\sffamily 命題 \ref{#1}}}

    %*系
            %? 大きめのボックス
    \newtcbtheorem[use counter from=theorem]{cor}{系}%
    {mytheo}{co}
            %? 省スペース
    \newtcbtheorem[use counter from=theorem]{smallcor}{系}{
        tatebou,blanker,breakable,
        left=3mm,right=3mm,
        top=3mm,bottom=3mm,
        % before skip=15pt,after skip=15pt,
        % borderline={0.5pt}{0pt}{black},
        borderline={1.5pt}{-0.5pt}{red!30!white},
        % after upper=\hfill\square %ボックス末尾につける記号
	}{co}
    % \newcommand{\coref}[1]{{\bfseries\sffamily 系 \ref{#1}}}

    %*定義
            %? 大きめのボックス
    \newtcbtheorem[use counter from=theorem]{definition}{定義}%
    {mytheo,colframe=defcolor!30!white,colback=defcolor!2!backbasecolor,colbacktitle=defcolor!30!white,borderline south={2pt}{-2pt}{defcolor!30!white},}{de}
            %? 省スペース
    \newtcbtheorem[use counter from=theorem]{smalldefinition}{定義}{
        tatebou,blanker,breakable,
        left=3mm,right=3mm,
        top=3mm,bottom=3mm,
        % before skip=15pt,after skip=15pt,
        % borderline={0.5pt}{0pt}{black},
        borderline={2pt}{-0.5pt}{defcolor!60!white},
        % after upper=\hfill\square %ボックス末尾につける記号
	}{de}
    % \newcommand{\deref}[1]{{\bfseries\sffamily 定義 \ref{#1}}}

    %*記号
    \newtcbtheorem[use counter from=theorem]{symbolset}{記号}{
        tatebou,blanker,breakable,
        left=3mm,right=3mm,
        top=3mm,bottom=3mm,
        % before skip=15pt,after skip=15pt,
        borderline={0.5pt}{0pt}{black}
        % after upper=\hfill\square %ボックス末尾につける記号
	}{sy}
    % \newcommand{\syref}[1]{{\bfseries\sffamily 記号 \ref{#1}}}

    %*補題
            %? 大きめのボックス
    \newtcbtheorem[use counter from=theorem]{lemma}{補題}%
    {mytheo,colframe=lemcolor!50!white,colback=lemcolor!50!white!2!backbasecolor,colbacktitle=lemcolor!50!white,borderline south={2pt}{-2pt}{lemcolor!50!white},}{le}
            %? 省スペース
    \newtcbtheorem[use counter from=theorem]{smalllemma}{補題}{
        tatebou,blanker,breakable,
        left=3mm,right=3mm,
        top=2mm,bottom=2mm,
        % before skip=15pt,after skip=15pt,
        borderline={1.0pt}{0pt}{black,dotted}
        % after upper=\hfill\square %ボックス末尾につける記号
	}{le}
    % \newcommand{\leref}[1]{{\bfseries\sffamily 補題 \ref{#1}}}

    %*例
            %? 大きめのボックス
    \newtcbtheorem[use counter from=theorem]{example}{例}%
    {mytheo,colframe=excolor!50!white,colback=excolor!2!backbasecolor,colbacktitle=excolor!50!white,borderline south={2pt}{-2pt}{excolor!50!white},}{ex}
            %? 省スペース
    \newtcbtheorem[use counter from=theorem]{smallexample}{例}{
        tatebou,blanker,breakable,
        left=3mm,right=3mm,
        top=1mm,bottom=1mm,
        % before skip=15pt,after skip=20pt,
        % borderline west={1.5pt}{0pt}{black,dotted}
        % borderline vertical={0.5pt}{0pt}{black,arrows = {Circle[scale=0.7]-Circle[scale=0.7]}}
        borderline vertical={3pt}{-2pt}{excolor},
        % borderline vertical={0.5pt}{0pt}{black},
        % borderline north={0.5pt}{0pt}{white,arrows={Circle[black,scale=0.7]-Circle[black,scale=0.7]}}
        after upper=\hfill\square %ボックス末尾につける記号
	}{ex}
    % \newcommand{\exref}[1]{{\bfseries\sffamily 例 \ref{#1}}}

    %*注意
            %? 大きめのボックス
    \newtcbtheorem[use counter from=theorem]{remark}{注意}%
    {mytheo,colframe=recolor!50!white,colback=recolor!2!backbasecolor,colbacktitle=recolor,borderline south={2pt}{-2pt}{recolor!50!white},}{re}
            %? 省スペース
    \newtcbtheorem[use counter from=theorem]{smallremark}{注意}{
        tatebou,blanker,breakable,
        left=3mm,right=3mm,
        top=1mm,bottom=1mm,
        % before skip=15pt,after skip=20pt,
        % borderline west={1.5pt}{0pt}{black,dotted}
        % borderline vertical={0.5pt}{0pt}{black,arrows = {Circle[scale=0.7]-Circle[scale=0.7]}}
        borderline vertical={3pt}{-2pt}{recolor!90!black},
        % borderline vertical={0.5pt}{0pt}{black},
        % borderline north={0.5pt}{0pt}{white,arrows={Circle[black,scale=0.7]-Circle[black,scale=0.7]}}
        after upper=\hfill\square %ボックス末尾につける記号
	}{re}
    % \newcommand{\reref}[1]{{\bfseries\sffamily 注意 \ref{#1}}}

    %*補足
    \newtcbtheorem[use counter from=theorem]{supplement}{補足}{
        tatebou,blanker,breakable,
        left=3mm,right=3mm,
        top=1mm,bottom=1mm,
        % before skip=15pt,after skip=20pt,
        % borderline west={1.5pt}{0pt}{black,dotted}
        % borderline vertical={0.5pt}{0pt}{black,arrows = {Circle[scale=0.7]-Circle[scale=0.7]}}
        borderline vertical={3pt}{-2pt}{black},
        % borderline vertical={0.5pt}{0pt}{black},
        % borderline north={0.5pt}{0pt}{white,arrows={Circle[black,scale=0.7]-Circle[black,scale=0.7]}}
        after upper=\hfill\square %ボックス末尾につける記号
	}{sup}
    % \newcommand{\supref}[1]{{\bfseries\sffamily 補足 \ref{#1}}}

    %*証明
    \newtcbtheorem[use counter from=theorem]{Proof}{証明}{
        tatebou,blanker,breakable,
        left=3mm,right=3mm,
        top=1mm,bottom=1mm,
        % before skip=15pt,after skip=20pt,
        % borderline west={1.5pt}{0pt}{black,dotted}
        % borderline vertical={1pt}{0pt}{black,dotted}
        borderline vertical={0.8pt}{0pt}{black,dotted,arrows={Square[scale=0.5]-Square[scale=0.5]}},
        after upper=\hfill\blacksquare, %ボックス末尾につける記号
    }{prf}
    % \newcommand{\prfref}[1]{{\bfseries\sffamily 証明 \ref{#1}}}
    
    %*演習
    \newtcbtheorem[use counter from=theorem]{problem}{演習}{
        tatebou,blanker,breakable,
        left=3mm,right=3mm,
        top=3mm,bottom=3mm,
        % before skip=15pt,after skip=15pt,
        borderline={0.5pt}{0pt}{black},
        after upper=\hfill\square %ボックス末尾につける記号
    }{prb}
    % \newcommand{\prbref}[1]{{\bfseries\sffamily 演習 \ref{#1}}}

この記事が気に入ったらサポートをしてみませんか?