Typst
https://scrapbox.io/files/678e58d901e4db697d3a079b.png https://typst.app/
ロゴはGitHubのorgページからコピペしてきました(正式な配布場所がわからない)
typst.app/legal/brand によると "You are free to use the Typst name and logo to refer to our web app and the Typst compiler" とのことだったので、ロゴをクリックすると typst.app に飛ぶようにしています このページどこかに移動したい(見出しを表示できて、編集がめちゃくちゃ簡単で、コードのシンタックスハイライトがあると、うれしい)
PDF埋め込み
今のところ出来ないらしい
#145ってマジ?(これ書いてる時点で3300はある)
pdf2svg でsvgに変換して読み込めば問題ない気がする
code:bash
for i in {1..100} ; do
pdf2svg "<PDF file>" "<output_prefix>_${i}.svg" $i 2>&1 > /dev/null || exit 0
done
code:typst
#for i in range(1, <ページ数+1>) [ ]
段落最初の字下げ
par functionが持っている first-line-indent でおわり
下に書いてあるとおり、昔は色々やらなければならなかったが、今(0.13.0以降)は all オプションなるものが登場したので、ほんとうにこれだけでおわりです
#set par(first-line-indent: 1em, all: true)
……かと思いきや、見出しの直後にある段落に対して字下げが行われない
> By typographic convention, paragraph breaks are indicated either by some space between paragraphs or by indented first lines
> 組版の慣習により、段落区切りは段落間にある空白もしくは最初のインデントされた行のいずれかによって表されます
なんだその慣習!海外の慣習か??
ひとまず「リーダブルコード」と「マスタリングTCP/IP」において、そのような組版が行われていない(見出し直後にもインデントがある)ことを確認した
Software Engineering at Google では文頭のインデントではなく、段落間の(垂直方向の)間隔で段落が示されていた
こうであるべきだ……
figure 直後の段落にも同様の現象が発生するらしい;上記コードにおいて s/heading/figure/したものを使って解決
というか何にでも発生したりしませんか?
改行を含む数式、columns、rectの後などでも発生
改行を含まない数式の直後はインデントが入る(inlineだったらparにwrapされているのかな?)
で、これらの要素は block によってwrapされているらしい
というわけで、見出しの直後に見えない段落を挿入して、見出しの直後を常に2段落目にしましょう
code:typst
#set par(first-line-indent: 1em) it
par(text(size: 0pt, ""))
}
これで各段落ごとに1字分(1em)のインデントを挿入することができる
この解決方法を用いると、#bibliography の下に謎の空白が挿入される
text の size を 0pt にしていても、サイズ0の要素にはならない
謎空白を作成している block 要素 it について、 it.body == auto が成り立つため、上のコードの代わりに以下を用いることで解決?
code:typst
if it.body == auto { return it }
it
par(text(size: 0pt, ""))
}
これだと list の後が字下げされない
ふざけんなマジで
そもそも list に対してこの解決方法を適用しようとすると、下方向のみ空白ができて渋い
list は特別扱いしましょうね~
code:typst
par(text(size: 0pt, ""))
it
par(text(size: 0pt, ""))
}
これで上下に等しく空白ができる
空白なしにはできない?
ソースコードのフォント変更
raw function (\`\`\`)内部で日本語が重なっちゃうよ~というときはフォントを変えると直ります(たぶん)
#show raw: set text(font: <フォント名>)
BibTeXの howpublished が無視される
howpublished = {\url{https://example.com}}とか書いてもBibliographyにURLが表示されないよ〜
Hayagriva使えばいいんじゃないですか(てきとう)
yamlで記述するやつ
変換ツールがないが、LLMにやってもらえばよさそう?
cargo install hayagriva --features cli してhayagrivaコマンドを用意し、hayagriva input.bib > output.yml とすれば変換してくれるらしい
段落間の行間をなくす
#set par(spacing: 0.65em)
あったほうが見やすいと思うんだけどなあ
SVGが一部表示されない
Base64でエンコードされた画像がSVGに含まれているとき、その画像部分が表示されないらしいですよ
PNGとかにしよう
nCr のような下付き文字を書く
LaTeXでいうところの {}_nC_r は space.nobreak を使えば良いっぽい
$space.nobreak_n C_r$
ベストプラクティスかどうかわからないけど
Cheat sheet
表のタイトルを表の下ではなく上に表示する
#show figure.where(kind: table): set figure.caption(position: top)
(tableにcaptionをつけたい時は #figure(table(...)) のようにfigureで囲む必要がある)
図の参照を行うときに "Figure" ではなく "図" としてほしい
code:typst
#show figure.where(kind: image): set figure(supplement: "図") @fig:foobar // => "図1"
s/image/table/g したら表が対象になるよ
個人的table template
code:typst
#let color_dark = luma(40) #let color_light = luma(240) stroke: (x, y) => if y == 0 {
color_dark
},
fill: (x, y) => if y == 0 {
color_dark
} else if calc.rem(y, 2) == 0 {
color_light
},
)
#set table.vline(stroke: color_dark) #set table.cell(align: horizon) #show table.cell: it => if it.y == 0 { show text: s => text(fill: color_light, strong(s))
align(center, it)
} else {
align(left, it)
}
(画像を貼りたいんだけど、このページのプレビューにさせたくないという気持ちがある) 落とし所を見つけた
上記の設定を適用して作成した表(ネットワークの授業で作ったレポートの一部)を以下に示す
https://scrapbox.io/files/678e585c9660c82644a86f59.png