SATySFi<s>ライトユーザー</s>分かってないマンの所感

おことわり

筆者はThe SATySFi bookをまだ読んでいないライトユーザー、いわゆる分かってないマンです。この記事書き終わったタイミングで読んで買います。この記事を読んであなたのSATySFi力が上がることはおそらくありません。

そうそう

この記事はSATySFi Advent Calendar 2018の23日目の記事です。

内容

「The SATySFi bookをまだ読んでいない素人がSATySFiを使っている様子」を(主にツイートから)振り返ってまとめた記事。(Togetterでよかったのでは?)

何に使っているか

  • 数学絡みの授業で毎週出る課題
    • 確率統計の授業用(学期前半はTeXを使っていたが乗り換えた): 44KiB
    • 群論の授業用: 105KiB
    • …あれ?これらの授業にしか使ってなくない?
    • もっと使っていきたい
    • 公開したいが、諸事情により公開してよい保証がない。残念。

使っていてハマった点

分数累乗バグ

SATySFiの発展に貢献できた。わーい。

改ページ周り

文章を書いていると稀にこれに抵触し、そのたびに空の+pn{}を挿入する必要が発生している。逆にいえば空の+pn{}を挿入するだけで解決してしまうため、そんなに困っていない。

\int^{c}_{\infty}とは書けない書けなかった

version 0.0.3で試してみたらちゃんと両方動いた。ということはこれバグだったのか。

長い数式がページから溢れたときの対策方法

間違いなくThe SATySFi bookに載っているはずなので調べる。

絶対値とかってどう書くの

これもまたThe SATySFi bookに載っているはずなので調べる。

対症療法

local.satyhに

    let-inline ctx \hide inner =
    let ctx-hide =
      ctx |> set-text-color (CMYK(0., 0., 0., 0.))
    in
      read-inline ctx-hide inner

とかいうものが生まれることになった。

フォントの差

これはスクショを貼らないと分かりづらいので補足する。私のパソコン(Mac)上で件のpdfを表示したときには次のようになる。

f:id:hsjoihs:20181223210514p:plain

一方、GitHubにpushしてからpdfのGitHubでの表示をSafariで見ると

f:id:hsjoihs:20181223210730p:plain

となって、右にズレる代わりに表示はされる。

わからん。つらい。

最初期に入れたのでアプデが面倒だった

特にhashでハマった。

感想としては、

というのがある(バックアップを取っていなかったため、途中から「これ途中で諦めるとSATySFiそのものが使えなくなるので、アプデを成功させるしかない」という状況になり、つらかった)。

satisfiedの綴りを間違えそうになる

 「satysfi【動詞】(三単現: satysfies, 現在分詞: satysfiing, 過去・過去分詞: satysfied):組版ソフトSATySFiを用いて組版すること。」が辞書に載るようになるぐらいSATySFiを盛り上げていくことで解決される問題である。*1

使っていて思ったこと

フォーマッターほしい

フォーマッターほしい。作りたい。

Haskellやっててよかった

まだThe SATySFi bookが紙でしか公開されていなかったタイミング(しかも当時日本にいなかったため紙のにもアクセスできず)で、表の罫線をいじる必要が発生したことがあった。

具体的には、群論の授業で「九九表*2を書け」という課題が出た。

Haskellをやっていたおかげで、demo.pdfしかヒントのない状況で以下のようなコードを書くことに成功した。

\tabular(fun cellf multif empty -> [
  [cellf {Table}  ; multif 1 1 {${0}};  multif 1 1 {${3}}; multif 1 1 {${6}}; multif 1 1 {${9}};];
  [cellf {${0}}; cellf {${0}}; cellf {${3}}; cellf {${6}}; cellf {${9}};];
  [cellf {${3}}; cellf {${3}}; cellf {${6}}; cellf {${9}}; cellf {${0}};];
  [cellf {${6}}; cellf {${6}}; cellf {${9}}; cellf {${0}}; cellf {${3}};];
  [cellf {${9}}; cellf {${9}}; cellf {${0}}; cellf {${3}}; cellf {${6}};];
])(fun xs ys -> (
  match (ys, List.reverse ys) with
  | (y0 :: y2 :: _, ylast :: _) ->
    ( match (xs, List.reverse xs) with
      | (x0 :: x1 :: x3 :: _, xlast :: _) ->
        let grlstY2 =
          [y0; ylast] |> List.map (fun y ->
            stroke 1pt Color.black (Gr.line (x0, y) (xlast, y)))
        in
        let grlstX2 =
          [x0; xlast] |> List.map (fun x ->
            stroke 1pt Color.black (Gr.line (x, y0) (x, ylast)))
        in
           (stroke 0.5pt Color.black (Gr.line (x1, y0) (x1, ylast)) ::
              stroke 0.5pt Color.black (Gr.line (x0, y2) (xlast, y2)) :: 
                List.append grlstX2 grlstY2
           )
      | _ -> []
    )
  | _ -> []
));

当時は日本国外でThe SATySFi bookを入手する手段が乏しかったため読んでいなかったのは仕方がないが、この記事を書いている段階ではオンラインでも閲覧ができ、そもそも私が日本国内にいる。そんな状況で読んでいないというのはただの怠慢なので読んでいきたい。本当はネット公開された時点で読もうと思ったのだけれどpixivアカウントを作るのが面倒で放置していた

ブロックコメントってあるんだろうか

あるのか分からないので全部の行頭に%をつけている。「コメントモード」とやらは%のみで発生する、みたいな記述を見たことがある気がするし、これが正解なのでは。

ちなみに私は「SATySFiに複数行コメントがほしい」と主張しているわけではなく、

などを考えると「複数行コメントなどない」というのも普通によい設計だと考える。(ここまで書いておいて「ありますよ〜」って言われたらどうしよう)

エラーメッセージのわかりやすさって正義ですよね

The SATySFi book、読まなきゃなんだよなぁ

The SATySFi bookを読まないとライブラリが足りないときにライブラリを書けないので、The SATySFi bookを読まねばならない。それはそう。

追記

記事を公開した後、

 ということになったので、「ライトユーザー」を「分かってないマン」に変更。

*1:冷静に考えると、これでは「『満たされた』という義の語を書きたいときに綴りを間違える」という問題は普通に解決されていない。

*2:分かっている人のために注記しておくと、Cayley table