プロジェクト

全般

プロフィール

縦書きTypst » 履歴 » バージョン 27

kanata, 2026/04/14 20:31

1 2 kanata
{{>toc}}
2
3 1 kanata
# 縦書きTypst
4 2 kanata
5
2026年4月11日より頒布しています!
6
7 27 kanata
[技術書展20](https://techbookfest.org/event/tbf20)で頒布している技術同人誌です
8 2 kanata
9
# ご購入
10
11
## 技術書典から
12
13 11 kanata
{{rawhtml(<div class="iframely-embed"><div class="iframely-responsive" style="padding-bottom: 52.5%; padding-top: 120px;"><a href="https://techbookfest.org/product/k0LEpgzNvHPixwXXrmbegB" data-iframely-url="https://iframely.net/wjJ1XcXG?theme=dark"></a></div></div><script async src="https://iframely.net/embed.js"></script>)}}
14 2 kanata
15
## BOOTHから
16
17 12 kanata
{{rawhtml(<div class="iframely-embed"><div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"><a href="https://booth.pm/ja/items/8064063" data-iframely-url="https://iframely.net/nbqMbrlz?card=small&theme=dark"></a></div></div><script async src="https://iframely.net/embed.js"></script>)}}
18 2 kanata
19 6 kanata
{{rawhtml(<!-- https://iframely.com/ -->)}}
20
21 2 kanata
# 内容
22
23 8 kanata
Typstは近年開発されたRust製の新しい組版ソフトウェアです。  
24
本書ではそのTypstを用いて、標準機能では対応していない縦書きに対応する方法、簡単に縦書きを実現する方法、関連機能やカスタマイズ方法を解説しています。  
25
また、提供テンプレートを使えば例えばどんなものが作れるのかサンプルを紹介しています。
26 2 kanata
27
## 紙面サンプル
28
29 10 kanata
{{thumbnail(表紙.png)}}{{thumbnail(01.png)}}{{thumbnail(03.png)}}{{thumbnail(04.png)}}{{thumbnail(08.png)}}{{thumbnail(19.png)}}{{thumbnail(29.png)}}{{thumbnail(36.png)}}
30 2 kanata
31
# テンプレートのダウンロード
32
33 3 kanata
[[Typst]]からダウンロードできます(リンク先の画面下にある「> ファイル」をクリックして tategaki_template.zip をダウンロードしてください)
34 2 kanata
35
# 正誤表
36
37
* 頒布後に見つけた(見つかった)ら
38
39
# 補足
40
41
# 関連情報
42 13 kanata
43 15 kanata
## 縦書きでTypstの標準機能の段組みを利用する方法
44 13 kanata
45 26 kanata
もしTypstが標準で用意している段組み機能を使えれば、段組の移り変わりで文字数を調整する必要がなくなります。
46 25 kanata
[Tomoya Tajika](https://x.com/tmytjk)さんが発案したアイデアを紹介してくださっています。(本書参考にしてくださって嬉しいです!)
47 13 kanata
48
{{rawhtml(<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">この本の真似をしてTypstの縦書きをやってみました.<a href="https://t.co/8Dngs004y5">https://t.co/8Dngs004y5</a> <a href="https://t.co/Dkr7fHw0PU">pic.twitter.com/Dkr7fHw0PU</a></p>&mdash; Tomoya Tajika (@tmytjk) <a href="https://twitter.com/tmytjk/status/2042973117107310840?ref_src=twsrc%5Etfw">April 11, 2026</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>)}}
49
50
{{rawhtml(<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">一応コードを置いておきます。<a href="https://twitter.com/hashtag/Typst?src=hash&amp;ref_src=twsrc%5Etfw">#Typst</a><a href="https://t.co/2v62k4KrlO">https://t.co/2v62k4KrlO</a></p>&mdash; Tomoya Tajika (@tmytjk) <a href="https://twitter.com/tmytjk/status/2043455847905583350?ref_src=twsrc%5Etfw">April 12, 2026</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>)}}
51
52 14 kanata
**ちょっと解説(本読んだ人しか解らない内容を書いています)**
53 13 kanata
筆者の本は、縦書きのブロック要素を回転させる方法で実現しています。
54
Typst標準の段組み機能は*横書き前提*なので、うまくフィットしません。
55
Tomoya Tajikaさんのアイデアは、ブロック要素じゃなくて、紙(というかPDFというか)を回転させればいいじゃない!
56
というやつですね。そうするとTypstの標準機能の段組みも自ずと縦書き用になるという。天才か・・・
57 16 kanata
58 24 kanata
**ちょっと課題もある**
59 20 kanata
この方法だと、ノドと小口の余白について個別に設定できなそう(仕組み上insideとoutosideが使えないのでTypstで設定する方式がなさそう)
60
解決方法としては本書おまけの「トンボ付け足し君」の応用することで解決できました
61 21 kanata
PDF各ページを回転しつつ、奇数ページ・偶数ページを判定して余白分を考慮してmoveでズラせば余白を調整できます
62 19 kanata
63
```
64
// トンボ付け足し君の366行目以降を以下に書き換えるとノドと小口の余白調整ができる(以下はおおげさに10mm調整している)
65
//--------------------
66
//       主処理
67
//--------------------
68
#for n in range(1, page_count+1) {
69
  place(horizon+center)[
70
    #if calc.even(n) { // 右綴じ偶数ページはノドが右側
71
      move(dx: -10mm)[#rotate(90deg)[#image(pdf_file, page: n,width: size.height)]]
72
    } else { // 左綴じ奇数ページはノドが左側
73
      move(dx: 10mm)[#rotate(90deg)[#image(pdf_file, page: n,width: size.height)]]
74
    }
75
  ]
76
  if flag_guide_line { guide_line(paper: original_page_size,bleed: bleed) }
77
  if flag_tonbo { tonbo(paper: original_page_size,bleed: bleed) }
78
  if flag_blind_nombre{ blind_nombre(binding: blind_nombre_binding) }
79
  if n < page_count { pagebreak() }
80
}
81
```
82 22 kanata
83
調整結果。ノド側の余白が広く取られていることが確認できます。
84 23 kanata
![](20260414_トンボ付け足し君による余白調整.png)