非デフォルトのtcolorboxでtcbrasterを使用すると改段処理が効かない

非デフォルトのtcolorboxでtcbrasterを使用すると改段処理が効かない

- KK TeX の投稿
返信数: 5

ascolorboxに掲載されているsimplesquareboxを、tcbrasterにかけることでminipage的役割を持たせるという使い方ができればかなり応用の効く物になると思って試してみたのですが、デフォルトのボックスだときちんと2カラムになるのにこちらではならないということが判明しました

コードの一部抜粋が以下となります。(最小構成のサンプルは添付の通りです。)


\begin{tcbraster}[raster columns=3,raster equal height]

\begin{simple}{あいうえお}
あいうえお
\end{simple}
\begin{simple}{あいうえお}
あいうえお
\end{simple}
\end{tcbraster}

jlreq特有の挙動というわけでもなく、ltjsreportでも同じ症状が発生します。また、行数を変えて試すと高さの調整は効いているようなので、改段処理のところさえどうにかすれば機能すると思われます。

強制的に(手動でもいいので)改段処理を入れられるようにしたいのですがどのようにするのが良いでしょうか。知恵をお貸しいただける方がいらっしゃいましたら何卒よろしくお願い申し上げます。
KK TeX への返信

Re: 非デフォルトのtcolorboxでtcbrasterを使用すると改段処理が効かない

- takamasa 23 の投稿

強引かつ見た目だけの解決方法なので,根本的な解決方法は有識者の方にお任せします。

以下の方法は,背景,枠線の色を白に指定した標準のboxの中にascoloroboxのboxを配置する,といったものです。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[luatex,fontsize=8pt,paper=b5,twoside,report]{jlreq}
\usepackage[top=16truemm,bottom=14truemm,left=12truemm,right=12truemm]{geometry}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%パッケージ関連%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[most]{tcolorbox}
\tcbuselibrary{raster}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\ascb@textgt#1{\textgt{#1}}
              \def\ascb@gtfamily{\gtfamily}
              \def\ascb@zw#1#2{#1\zw}
\DeclareTColorBox{simple}{ o m O{.5} O{} }% 
{empty, left=2mm, right=2mm, top=-1mm, attach boxed title to top left={xshift=\ascb@zw{1.2}{11pt}}, boxed title style={empty,left=-2mm,right=-2mm}, colframe=black, coltitle=black, coltext=black, breakable, 
underlay unbroken={\draw[black,line width=#3pt](title.east) -- (title.east-|frame.east) -- (frame.south east) -- (frame.south west) -- (title.west-|frame.west) -- (title.west); },
underlay first={\draw[black,line width=#3pt](title.east) -- (title.east-|frame.east) -- (frame.south east) ;
\draw[black,line width=#3pt] (frame.south west) -- (title.west-|frame.west) -- (title.west); },
underlay middle={\draw[black,line width=#3pt](frame.north east) -- (frame.south east) ;
\draw[black,line width=#3pt](frame.south west) -- (frame.north west) ;},
underlay last={\draw[black,line width=#3pt](frame.north east) -- (frame.south east) -- (frame.south west) -- (frame.north west) ;},
fonttitle=\gtfamily, IfValueTF={#1}{title=【#2】〈#1〉}{title=【#2】},#4}

\begin{document}
\begin{tcbraster}[raster columns=3,raster equal height]
\begin{tcolorbox}[boxsep=0pt,colframe=white,colback=white,top=0mm,bottom=0mm,right=0mm,left=0mm]
  \begin{simple}{あいうえお}
    あいうえお
  \end{simple}
 \end{tcolorbox}
\begin{tcolorbox}[boxsep=0pt,colframe=white,colback=white,top=0mm,bottom=0mm,right=0mm,left=0mm]
  \begin{simple}{あいうえお}
    あいうえお
  \end{simple}
 \end{tcolorbox}
\end{tcbraster}
\end{document}
takamasa 23 への返信

Re: 非デフォルトのtcolorboxでtcbrasterを使用すると改段処理が効かない

- KK TeX の投稿

確かにダミーのボックスで囲ってしまえばいいですね!めちゃくちゃ賢いと思います。

ありがとうございます!!

KK TeX への返信

Re: 非デフォルトのtcolorboxでtcbrasterを使用すると改段処理が効かない

- KK TeX の投稿

ただ、これだと中身のボックスの高さが揃わないので、結局breakableを外すのが正しそうです。

KK TeX への返信

Re: 非デフォルトのtcolorboxでtcbrasterを使用すると改段処理が効かない

- 和田 勇 の投稿

\begin{simple}...\end{simple}\mbox\fbox で囲んであげると なんとか格好がつくので、 どこかに改行 が紛れ込んでいるのかと試したところ 16 行目の最後の breakable, を除去するとお望みの形になるようです。

差分の提示も考えたのですが、一行が長いので見難いの上記の表現にしました。

なおページ跨りするような場合はうまくいかないかもしれません。

それとプリアンブルで @ を使用されていますが、 \makeatletter とかしなくてもいいのかな ...と思いつつも この点については深く検証していません。

和田 勇 への返信

Re: 非デフォルトのtcolorboxでtcbrasterを使用すると改段処理が効かない

- KK TeX の投稿
確かにbrakableが問題の元凶であるみたいですね!
breakableをつけているボックスに関しては、takamasa 23さんの方法と併せて対応します。
毎度返信いただき本当に感謝する限りです。