🦋

Typst でLaTeXのtcolorbox.styみたいに箱を描きたい!

2024/12/09に公開

Typst Advent Calendar 2024 の9日目が空いていたので,何か書こう思いました。

https://qiita.com/advent-calendar/2024/typst

はじめに

\LaTeXtcolorbox.styを使うと,いい感じのカラーボックスが作れますよね。

それをTypstでも作りたいと思いました。

https://texwiki.texjp.org/?tcolorbox

https://ftp.yz.yamagata-u.ac.jp/pub/CTAN/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf

colorful-boxesパッケージ

Typstcolorful-boxesというパッケージを使いました。Typstはパッケージがサイトでまとめられていますね。

https://typst.app/universe/package/colorful-boxes/

作ったカラーボックス

実際に私が,Xなどのポストでよく利用するカラーボックスです。

Typstのコード

コードはこんな感じです。

#set page(
paper: "a4",
height: 297mm,
width: 210mm,
margin: (x: 1.5cm, y: 1.5cm),
)
 
#set par(
  justify: true,
  leading: 1em,
)
 
#set text(
  font: ("New Computer Modern","BIZ UDPMincho")
)
 
#show regex("[\p{scx:Han}\p{scx:Hira}\p{scx:Kana}]"): set text(font: "BIZ UDPGothic") 
#set text(lang: "ja")
 
#set enum(numbering: "(1)",)
 
#import "@preview/colorful-boxes:1.2.0": *
 
#let my_block(back_color, frame_color, title_color, content_color, title, content) = {
  block(width:100%,radius: 4pt, stroke: back_color + 3pt)[
    #block(width: 100%,fill: back_color, inset: (x: 20pt, y: 5pt), below: 0pt)[#text(title_color,font: ("New Computer Modern","BIZ UDPMincho"))[#title]]
   #block(radius: (
    bottom: 3pt,
  ),width: 100%, fill: frame_color, inset: (x: 20pt, y: 10pt))[#text(content_color)[#content]]
  ]
}
 

#my_block(olive,rgb(95%, 100%, 95%) , white, black, [九九の数の総和について], [
九九の表に出てくる数をすべて加えると *2025* となります。

$ sum_(i=1)^9sum_(j=1)^9 i j &=(sum_(i=1)^9i)(sum_(j=1)^9 j)\
&=(1+2+ dots.c +9)^2\ & = 1^3+2^3+dots.c+9^3 \ &= 45^2\ &=bold(2025)  $
  ])


#v(1cm)
#let args = arguments(fill: rgb("#7ffffb28"),stroke: blue, inset: 8pt,radius: 4pt,[九九の表に出てくる数をすべて加えると *2025* となります。

$ sum_(i=1)^9sum_(j=1)^9 i j &=(sum_(i=1)^9i)(sum_(j=1)^9 j)\
&=(1+2+ dots.c +9)^2\ & = 1^3+2^3+dots.c+9^3 \ &= 45^2\ &=bold(2025)  $])
#figure(box(..args))

色の変更

私の環境はM1 MacBookProのVSCode上でTypstを利用しています。
色を切り替える時はコードの色のところをクリックして,変更できます。
「コードを書く」というUIに反する感じですが,便利に使ってます。

enjoy Typst life !

Discussion