3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【鉄テキに匹敵】凝った tcolorbox の作り方【前編】(LaTeX確認シリーズ#6)

3
Last updated at Posted at 2026-07-26

【鉄テキに匹敵】凝った tcolorbox の作り方【前編】(LaTeX確認シリーズ#6)

tcolorbox で箱を作っていると、どこかで必ずこの壁にぶつかります。

「キーを組み合わせるだけでは、作りたい形にならない」

タイトルを旗みたいに尖らせたい。四隅を 45 度に落としたい。中に方眼を敷きたい。角を内側にえぐりたい。リング綴じのノートみたいにしたい。四隅に渦巻きの装飾を置きたい。

これらは colframearc の延長線上にはありません。別の考え方が必要です。その考え方は一言でいうと、

凝った箱とは「どのレイヤーに何を描くか」の設計である

ということです。この記事では、その描画レイヤーの地図を最初に示し、そのうえで実際に動く装飾テクニックをコードと完成画像で紹介します。

長くなったので前後編に分けました。

  • 前編(この記事):レイヤーの地図と、枠そのものを描き替える技法4つ(旗型タイトル/面取り/地紋/内向き円弧)。あわせて改ページの4状態。
  • 後編装飾を並べて配る技法3つ(リング綴じ/\foreach の反復/隅飾り)。座標変換と鏡像の話。

この記事のコードは全て TeX Live 2026 + LuaLaTeX + ltjsarticle で実際にコンパイルし、PNG に書き出して目視確認済みです。コピペすれば動きます(記事末に完全なソースを置いています)。

想定読者

  • \newtcolorbox で色と枠線は変えられるが、それ以上に踏み込めていない
  • ネットで拾った凝った定義をコピペしたが、中で何が起きているか分からない
  • underlay は聞いたことがあるが、underlay boxed title は知らない

配色設計や TikZ アンカーの基礎は オシャレな tcolorbox を誰でも作る方法 が詳しいです。この記事はその先の「描画レイヤーを使い分けて形を作る」側に振っています。


第1部:凝った箱の前提知識

1-1. まず enhanced を書く

これが全ての入口です。

\usepackage[most]{tcolorbox}

そして箱の定義には必ず enhanced を入れます。

\DeclareTColorBox{MyBox}{ m O{} }{ enhanced, ... }

enhanced は「TikZ で自由描画できる高機能スキンに切り替える」スイッチです。これがないと、この記事で紹介するキーはほぼ全部効きません。「なぜか underlay が無視される」の原因は、9割これです。

1-2. 描画レイヤーの地図

ここが記事の背骨です。tcolorbox は箱を層状に描いています。凝った箱を作るとは、この層のどこに手を入れるかを選ぶことです。

  │ finish            仕上げ(最前面)
  │ overlay           本文の「上」          
  │ ── 本文(upper / lower)──             
  │ underlay          本文の「下」          
  │ interior          地(背景)            
  │ frame             枠                    
  │ shadow            影(最背面)          


  タイトル箱は独立した層のスタックを持つ
  │ overlay boxed title                     
  │ ── タイトル文字 ──                     
  │ underlay boxed title  ← 帯の形を作る層  
  │ boxed title style     ← 枠・地の設定    

  さらに upper と lower の間に
  segmentation(仕切り線)の層がある

これを踏まえると、やりたいことと触るべきキーが1対1で対応します。

やりたいこと 触るレイヤー
タイトルを旗やリボンの形にする underlay boxed title
枠を多重にする borderline(複数回書ける)
地にグラデーションを敷く interior style
中に方眼や地紋を描く underlay + tcbclipinterior
角の形を自分で決める sharp corners で殺して underlay で描く
本文の上にラベルを重ねる overlay
upper と lower の仕切りを変える segmentation style

underlayoverlay の使い分けはシンプルです。

  • underlay … 本文の。罫線、地紋、網掛け、背景装飾
  • overlay … 本文の。ラベル、透かし、本文に被せたい要素

装飾はほぼ underlay です。overlay を使うと本文が装飾に隠れるので、意図的なときだけにします。

そして重要な順序の話がひとつ。 タイトル箱は underlay より先に描かれます。つまり underlay で枠線をぐるっと一周させると、その線がタイトルの文字を突き抜けます。この記事の技法2・4で「タイトルの左右で線を途切れさせる」書き方をしているのは、全部この理由です。

1-3. ノードとアンカーと射影座標

underlay などの中身は素の TikZ コードで、以下のノードが使えます。

frame.north west     frame.north      frame.north east
frame.west           frame.center     frame.east
frame.south west     frame.south      frame.south east

interior.north west  ...   (枠の内側の領域)
title.north west     title.east   ...   (タイトル箱)
segmentation.west    segmentation.east

そして凝った箱で最も使う道具が、TikZ の射影座標 -||- です。

(frame.north west -| title.east)

これは「frame.north west の高さで、title.east の横位置」という点です。

「枠の上辺の高さで、タイトルの右端まで」が一発で書けます。これを知らないと座標計算地獄になります。読み方は「-| は横に走ってから縦」「|- は縦に走ってから横」と覚えると混乱しません。


第2部:技法カタログ(前編)

ここから実装です。前編では枠そのものを描き替える4つを作ります。

共通のトークンはこれです。以降、数値はここから参照します。

% 配色(Tailwind sky / slate 系)
\definecolor{qdeep}{HTML}{075985}   % sky-800
\definecolor{qmid}{HTML}{0284C7}    % sky-600
\definecolor{qcyan}{HTML}{38BDF8}   % sky-400
\definecolor{qlight}{HTML}{E0F2FE}  % sky-100

\newlength{\BoxIndent}\setlength{\BoxIndent}{1\zw}
% 和欧混植でラベルの高さを安定させるストラット
\NewDocumentCommand{\BoxStrut}{}{\vphantom{}\vphantom{j}}

技法1:タイトルを旗の形にする(underlay boxed title

旗型のタイトル帯

タイトル帯の背景を、自分で描いた多角形に置き換えます

やり方は2段階です。

  1. boxed title style={empty, boxrule=0pt} で、tcolorbox が描くタイトル背景を消す
  2. underlay boxed title で、自分の好きな形を \fill する
\DeclareTColorBox{FlagBox}{ m O{} }{%
  enhanced, breakable,
  colback=white, colframe=qmid, boxrule=1pt, arc=1mm,
  before upper={\setlength{\parindent}{\BoxIndent}},
  attach boxed title to top left={xshift=2mm, yshift=-\tcboxedtitleheight/2},
  boxed title style={empty, boxrule=0pt, left=2mm, right=2mm},
  coltitle=white, fonttitle=\gtfamily\bfseries,
  varwidth boxed title=0.7\linewidth,
  underlay boxed title={%
    % 右端が三角に尖った旗
    \fill[qdeep]
      (title.north west) -- (title.north east)
      -- ([xshift=\tcboxedtitleheight/2]title.east)
      -- (title.south east) -- (title.south west) -- cycle;
    % 左下に折り返しの影
    \fill[qdeep!60!black]
      (title.south west) -- ++(0,-1.2mm) -- ++(1.6mm,1.2mm) -- cycle;},
  top=3mm,
  title={#1}, #2}

ここで一番大事なのは \tcboxedtitleheight です。

これは「タイトル箱の実際の高さ」が入った寸法で、尖りの大きさをこれの半分にすることで、フォントサイズを変えても形の比率が保たれます3mm のような固定値で書くと、\small にした瞬間に不格好になります。

同じ理由で yshift=-\tcboxedtitleheight/2 を使っています。タイトル箱の高さの半分だけ下げると、枠の上辺の真上にタイトルの中心が乗ります。この定型は覚えてしまってください。

技法2:四隅を落とす(面取りフレーム)

面取りフレーム

arc の角丸ではなく、45 度に切り落とした八角形の枠です。角丸より硬質で、証書や賞状のような印象になります。

考え方はシンプルで、四隅の手前で曲がる 8 点の多角形を引くだけです。ただし前述のとおり、閉じたパスを引くとタイトルに線が刺さります。そこで**タイトルの左右で口を開けた「開いたパス」**にします。

% #1 = 枠からの内側オフセット, #2 = 面取り量
\NewDocumentCommand{\ChamferPath}{ m m }{%
  ($(frame.north west -| title.east)+(0,-#1)$)
  -- ([xshift=-#1-#2, yshift=-#1]frame.north east)
  -- ([xshift=-#1,    yshift=-#1-#2]frame.north east)
  -- ([xshift=-#1,    yshift=#1+#2]frame.south east)
  -- ([xshift=-#1-#2, yshift=#1]frame.south east)
  -- ([xshift=#1+#2,  yshift=#1]frame.south west)
  -- ([xshift=#1,     yshift=#1+#2]frame.south west)
  -- ([xshift=#1,     yshift=-#1-#2]frame.north west)
  -- ([xshift=#1+#2,  yshift=-#1]frame.north west)
  -- ($(frame.north west -| title.west)+(0,-#1)$)}

\DeclareTColorBox{ChamferBox}{ m O{3mm} O{} }{%
  enhanced, breakable=false, sharp corners,
  colback=white, colframe=white, boxrule=0pt, boxsep=0pt,
  left=7mm, right=7mm, top=5mm, bottom=5mm,
  before upper={\setlength{\parindent}{\BoxIndent}},
  attach boxed title to top left={xshift=10mm, yshift=-\tcboxedtitleheight/2},
  boxed title style={empty, boxrule=0pt, left=2mm, right=2mm},
  coltitle=qdeep, fonttitle=\gtfamily\bfseries,
  underlay={%
    \draw[qdeep, line width=.5pt, double, double distance=1.4pt]
      \ChamferPath{0mm}{#2};
    \draw[qcyan, line width=.4pt] \ChamferPath{1.6mm}{#2};},
  title={\BoxStrut #1}, #3}

ポイントが3つあります。

パスをマクロにして、引数でオフセットを変える。 同じ形を「0mm」と「1.6mm」の2回呼ぶだけで、内側にもう1本の枠が入ります。多重枠を手で書き直すのは修正地獄なので、輪郭は必ずマクロ化してください。

二重線は TikZ の double に任せる。 double, double distance=1.4pt と書けば、パスを2回引かなくても中抜きの二重線になります。自前で 2 本引くより角の処理が綺麗です。

boxrule=0pt で本来の枠を消す。 枠は全部 underlay に任せます。tcolorbox の枠と自前の枠を混在させると、角丸の半径合わせで必ず苦しみます。

技法3:地紋を敷く(tcbclipinterior が必須)

地紋つきの箱

箱の中に地紋を敷きます。この記事で一番使い回しが効く技法です。

コツは、地紋を一枚の絵として書かないことです。性質の違う層に分けて、層ごとに独立したマクロにします。ここでは3層あります。

中身 性質
(a) 方眼 細方眼+太方眼の2枚重ね 場所に依存しない。どこにでも敷ける
(b) 光 左上からの放射グラデーション 箱の始まりを示す
(c) 隅の鉤 四隅のかぎ括弧 箱の角を示す

分ける理由は改ページです(後述)。まず (a) から。

% (a) 細方眼と太方眼の2枚重ね。原点を interior.north west へ移すと、
%     方眼の目が箱の左上から始まる。矩形は大きめに取ってクリップに任せる。
\NewDocumentCommand{\GridMesh}{}{%
  \begin{tcbclipinterior}
    \begin{scope}[shift={(interior.north west)}]
      \draw[qcyan!35, line width=.25pt, step=3mm]
        (0,0) grid (\linewidth,-\textheight);
      \draw[qmid!55, line width=.5pt, step=12mm]
        (0,0) grid (\linewidth,-\textheight);
    \end{scope}
  \end{tcbclipinterior}}

% (b) 左上の光。
\NewDocumentCommand{\GridGlow}{}{%
  \begin{tcbclipinterior}
    \shade[inner color=qcyan!30, outer color=white]
      (interior.north west) circle (4cm);
  \end{tcbclipinterior}}

% (c) 隅の鉤。内側へ 2.5mm 寄せて枠線と重ならないようにする。
%     上下を別マクロにしておくと状態へ配りやすい。
\NewDocumentCommand{\GridCornerTop}{}{%
  \draw[qdeep, line width=1.1pt, line cap=round, line join=round]
    ([shift={(10.5mm,-2.5mm)}]interior.north west)
      -- ([shift={(2.5mm,-2.5mm)}]interior.north west)
      -- ([shift={(2.5mm,-10.5mm)}]interior.north west)
    ([shift={(-10.5mm,-2.5mm)}]interior.north east)
      -- ([shift={(-2.5mm,-2.5mm)}]interior.north east)
      -- ([shift={(-2.5mm,-10.5mm)}]interior.north east);}
\NewDocumentCommand{\GridCornerBot}{}{%
  \draw[qdeep, line width=1.1pt, line cap=round, line join=round]
    ([shift={(10.5mm,2.5mm)}]interior.south west)
      -- ([shift={(2.5mm,2.5mm)}]interior.south west)
      -- ([shift={(2.5mm,10.5mm)}]interior.south west)
    ([shift={(-10.5mm,2.5mm)}]interior.south east)
      -- ([shift={(-2.5mm,2.5mm)}]interior.south east)
      -- ([shift={(-2.5mm,10.5mm)}]interior.south east);}

\DeclareTColorBox{GridBox}{ m O{} }{%
  enhanced, breakable,
  colback=white, colframe=qcyan, boxrule=.8pt, arc=.5mm,
  left=8mm, right=8mm, top=6mm, bottom=6mm,
  before upper={\setlength{\parindent}{\BoxIndent}},
  coltitle=white, fonttitle=\gtfamily\bfseries,
  title style={left color=qdeep, right color=qcyan},
  underlay unbroken={\GridGlow\GridMesh\GridCornerTop\GridCornerBot},
  underlay first={\GridGlow\GridMesh\GridCornerTop},
  underlay middle={\GridMesh},
  underlay last={\GridMesh\GridCornerBot},
  title={\BoxStrut #1}, #2}

underlay の4行が、そのまま「どの層をどの状態で描くか」の表になっています。装飾が増えるほど、この形にしておく価値が上がります。

tcbclipinterior 環境が絶対に必要です。

これは「この中で描いたものを、箱の内側の領域でクリップする」という指示です。これを忘れると、円も方眼も箱の外まではみ出して紙面全体を汚します。 半径 4cm の円を描いているので、クリップがないと箱から盛大にはみ出します。

このクリップは「はみ出しを防ぐもの」であると同時に、「大きさを測らなくてよくするもの」でもあります。 方眼の矩形を (\linewidth,-\textheight) という雑な大きさで描いているのはそのためです。箱の高さは組んでみるまで決まりませんが、クリップがあるなら箱より大きく描いておけば必ず埋まるので、高さを計算する必要がありません。

セットで覚えておくと便利なものが3つあります。

環境 クリップ範囲
tcbclipinterior 箱の内側(枠の内側)
tcbclipframe 枠を含む箱全体
tcbcliptitle タイトル箱の領域

\shade はグラデーション塗りです。

\shade[inner color=A, outer color=B] (中心) circle (半径);  % 放射
\shade[left color=A, right color=B]  (a) rectangle (b);     % 線形

grid が方眼のイディオムです。

\begin{scope}[shift={(基準点)}]
  \draw[step=3mm, 色, line width=.25pt] (0,0) grid (十分大きな点);
\end{scope}

格子の目は原点を基準に並びます。shift を付けないと紙の原点が基準になり、箱の位置が数ミリ動くだけで方眼の切れ方が変わります。 interior.north west に原点を移せば、どの箱でも左上の角から目が始まります。

細かい方眼と粗い方眼を2枚重ねると、一気に「設計された地紋」になります。 ここでは 3mm と 12mm を、色の濃さと線幅を変えて重ねています。1枚だけだと、細かくすれば潰れ、粗くすれば寒々しい。2枚にすると細かい目で紙の質感を出しつつ、粗い目で構造を見せられます。倍数関係(3mm と 12mm で 4 倍)にしておくのがコツで、線が重なって濃くなる位置が規則正しく並びます。

地紋を3つに分けている理由

この技法の一番のハマりどころです。

最初は光も方眼も1つのマクロにまとめ、4状態すべてに同じものを割り当てていました。エラーは出ません。1ページに収まる箱なら見た目も完璧です。

ところが改ページさせた瞬間に破綻します。 光は interior.north west、つまり「そのページの箱の左上」を中心に描かれます。継続ページにも同じコードを流すと、2ページ目も3ページ目も左上が光り直す。読者には「箱が続いている」ではなく「同じ箱が何度も始まっている」ように見えます。隅の鉤も同じで、全状態に置くと毎ページ箱が閉じてしまいます。継続ページの上端は角ではなく、断面だからです。

なので、位置に依存する装飾は状態ごとに分ける必要があります。判断は「その装飾は何を意味しているか」で決まります。

装飾の意味 割り当て この箱での例
どこでも成り立つ 4状態すべて 方眼
「ここが始まり」 unbrokenfirst 光、上の鉤
「ここが終わり」 unbrokenlast 下の鉤

unbroken が2回出てくることに注目してください。分割されていない箱は、始まりでもあり終わりでもあります。 ここを間違えると、改ページしない箱だけ装飾が欠けます。

技法4:角を内側にえぐる(内向き円弧フレーム)

内向き円弧フレーム

角丸の逆、四隅が内側にへこんだ枠です。学参や辞典の見出し囲みでよく見る形で、これも arc キーでは作れません。

\NewDocumentCommand{\ConcavePath}{ m m }{%
  ($(frame.north west -| title.east)+(0,-#1)$)
  -- ([xshift=-#1-#2, yshift=-#1]frame.north east)
  arc [start angle=180, end angle=270, radius=#2]
  -- ([xshift=-#1, yshift=#1+#2]frame.south east)
  arc [start angle=90,  end angle=180, radius=#2]
  -- ([xshift=#1+#2, yshift=#1]frame.south west)
  arc [start angle=0,   end angle=90,  radius=#2]
  -- ([xshift=#1, yshift=-#1-#2]frame.north west)
  arc [start angle=270, end angle=360, radius=#2]
  -- ($(frame.north west -| title.west)+(0,-#1)$)}

種明かしをすると、これは普通の角丸とパスの書き方が同じです。

arc [start angle=A, end angle=B, radius=R] の角度は「円の中心から見た角度」です。そして、

  • 中心を角の内側に置く → 弧は外に膨らむ → 普通の角丸
  • 中心を角そのものに置く → 弧は内に食い込む → 内向き円弧

違いはこれだけです。角度の組み合わせは同じものが使えます。

start → end
右上 180° → 270°
右下 90° → 180°
左下 0° → 90°
左上 270° → 360°

「角丸を自分で描く」を一度やっておくと、角の意匠が全部自由になります。 上2つだけ丸い、角ごとに半径が違う、片側だけえぐる、といったものは全部この延長です。


第3部:改ページと寸法の落とし穴

3-1. breakable の4状態

breakable を付けた箱は、4つの別々の状態として描画されます。

状態 いつ使われるか
unbroken 分割されなかった
first 分割された箱の先頭
middle 中間(2回以上またぐと出る)
last 末尾

breakable の4状態

underlay={...} とだけ書くと全状態に同じ描画が適用されます。技法2・4のような「ぐるっと閉じる」装飾では、first にも下辺が描かれて箱が閉じてしまいます。

装飾が凝っているほど、この破綻は派手になります。だからこそ凝った箱では最初に方針を決めてください

  • 分割させないbreakable=false)… 完全な囲み、リング綴じ、隅飾りなど
  • 分割させる(4状態を書き分ける)… 罫線ベースの装飾、地紋

前編の4つでは ChamferBoxArcBoxbreakable=false にしています。装飾の性質上、分割すると意味をなさないからです。逆に GridBox は地紋なので分割しても自然です(後編の3つは全部 breakable=false になります)。

breakable=false を明示するのは重要です。 デフォルト任せにすると、フォントサイズを変えた瞬間に挙動が変わります。

組み合わせキーの罠

4つ書くのが面倒なら、組み合わせキーがあります。

underlay unbroken and first={...}
underlay middle and last={...}
underlay unbroken and last={...}
underlay first and middle={...}
underlay broken={...}      % first + middle + last
overlay unbroken and first={...}
overlay middle and last={...}

ただしこれらは単なる省略記法で、個別キーに展開されます。つまり後に書いたものが前を上書きします。

underlay unbroken and first={A},   % unbroken=A, first=A
underlay unbroken and last={B},    % unbroken=B に上書き! first=A のまま

unbroken に A と B の両方を描きたいなら、unbroken を単独で書いて中に両方入れるしかありません。

技法3の GridBox が正にこれで、「始まりの装飾」と「終わりの装飾」の両方を持っています。組み合わせキーで書くと必ずどちらかが消えるので、4状態を素直に4行書いています。

underlay unbroken={\GridGlow\GridMesh\GridCornerTop\GridCornerBot},
underlay first={\GridGlow\GridMesh\GridCornerTop},
underlay middle={\GridMesh},
underlay last={\GridMesh\GridCornerBot},

層をマクロに切り出しておくと、この4行が単なる組み合わせの表になります。 装飾が2種類を超えたら、組み合わせキーは諦めたほうが早いです。

middle は3ページ分ないと出現しない

検証で一番大事な話です。

middle は「2回以上ページをまたいだとき」にしか発生しません。1ページ分のテストでは firstlast しか出ず、middle のバグは本番原稿で初めて表面化します。

テスト文書は TeX だけでダミーを量産できます。

\begin{GridBox}{改ページ検証}
\newcount\dm \dm=0
\loop\advance\dm by 1
これは改ページ検証用のダミー本文です。段落番号 \the\dm\par
\ifnum\dm<80 \repeat
\end{GridBox}

カウンタ名を \n にしないでください。\foreach \n と衝突します。

3-2. 寸法はフォントに追随させる

凝った箱が「フォントサイズを変えたら崩れる」のは、ほぼ固定値のせいです。

使うべきもの 用途
\tcboxedtitleheight タイトル箱の高さ。旗の尖り、yshift、装飾の縦寸法
\tcboxedtitlewidth タイトル箱の幅。残り幅の計算(後編の技法6で使います)
\linewidth 版面幅
\zw 和文の字幅(字下げ、水平方向の余白)
\baselineskip 行送り(箱の前後アキ)
pt / mm 線の太さなど、物理寸法に理由がある箇所だけ

em を和文まわりに使わないでください。 欧文フォントを変えた瞬間に余白が動きます。

3-3. 前編で実際に踏んだエラー

LaTeX Error: Environment varwidth undefined.

varwidth boxed title を使うと出ます。varwidth パッケージが必要です。

\usepackage{varwidth}

tcolorbox[most] オプションでは読み込まれません。ちなみに varwidth boxed title=0.7\linewidth は「長いタイトルを指定幅で折り返す」キーで、凝った箱では必須級です。付けないと長いタイトルが版面からはみ出します。

装飾がタイトルや本文に重なる

エラーは出ませんが、目で見ないと分からないタイプです。attach boxed title でタイトルを枠に食い込ませると、本文の1行目がタイトルに突っ込みます

top は「本文と枠上辺の距離」なので、食い込ませたタイトルの高さ分を自分で確保する必要があります。技法1で top=3mm を明示しているのはそのためです。

この種のバグはログには一切出ません。 PDF を PNG にして目で見る以外の検出方法がありません。


前編のまとめ

考え方

# 要点
1 凝った箱とは「どのレイヤーに何を描くか」の設計
2 enhanced が全ての入口。これがないと underlay 系は効かない
3 タイトルは underlay より先に描かれる。閉じたパスは題字を突き抜ける
4 射影座標 (frame.north west -| title.east) で座標計算はほぼ不要になる
5 輪郭はマクロ化して、オフセットを引数で変える

技法

# 技法 鍵となるキー
6 タイトルを旗にする underlay boxed title + boxed title style={empty}
7 四隅を落とす 8点の開いたパス + double
8 地紋を敷く tcbclipinterior + \shade + 粗細2枚の grid
9 角を内側にえぐる arc の中心を角そのものに置く

落とし穴

# 要点
10 完全な囲みは breakable=false。可否は必ず明示する
11 breakable なら4状態。組み合わせキーは後勝ちで上書きされる
12 位置に依存する装飾(光・隅飾り等)は状態ごとに層を分けて割り当てる
13 middle は3ページ分ないと出現しない
14 装飾の寸法は \tcboxedtitleheight / \tcboxedtitlewidth 基準にする
15 varwidth boxed title には varwidth パッケージが要る

ここまでで、「枠の形を自分で決める」側は一通り揃いました。角を落とす、えぐる、地を敷く、タイトルの形を変える。この4つが書ければ、たいていの意匠は輪郭の差し替えで作れます。

後編:残り3つは、**装飾を「1個描いて、あとは配る」**話です。中間点座標で等間隔に置く、\foreach で反復する、鏡像で四隅に展開する。座標変換を覚えると、装飾コードが箱の大きさから完全に独立します。


付録:前編の完全なソース

これをそのまま .tex として保存し、lualatex で通ります。4つの箱が1ページに1つずつ出たあと、GridBox の改ページ検証が数ページ続きます。

(この記事の図版は全てこのファイルから生成しています。全文は qiita-ornate-tcolorbox-part1.tex を参照してください。)

\documentclass[a4paper,11pt]{ltjsarticle}
\usepackage[margin=22mm]{geometry}
\usepackage[most]{tcolorbox}   % most で enhanced/breakable/skins をまとめてロード
\usepackage{varwidth}          % varwidth boxed title に必須(most では入らない)
\usetikzlibrary{calc}          % ($(A)+(0,-1mm)$) と $(A)!.5!(B)$ に必要

%==================== 配色(Tailwind sky / slate 系) ====================
\definecolor{qdeep}{HTML}{075985}   % sky-800
\definecolor{qmid}{HTML}{0284C7}    % sky-600
\definecolor{qcyan}{HTML}{38BDF8}   % sky-400
\definecolor{qlight}{HTML}{E0F2FE}  % sky-100

%==================== 寸法トークン ====================
\newlength{\BoxIndent}\setlength{\BoxIndent}{1\zw}
\NewDocumentCommand{\BoxStrut}{}{\vphantom{}\vphantom{j}}

以降の箱の定義は本文中のコードをそのまま並べれば動きます。順序は 技法1 → 技法4 で、マクロ(\ChamferPath / \GridMesh / \GridGlow / \GridCornerTop / \GridCornerBot / \ConcavePath)を対応する \DeclareTColorBox より前に置いてください。

プリアンブルは後編と共通です。後編の3つを足すときは、このファイルにそのまま追記できます。


宣伝

  • Evolton: 問題を貼るとAIが自動でシケプリにしてくれるアプリ。
    Evolton

  • Mathhover_1: 数式を打つIME。
    Mathhover
    Mathhover_2


参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?