これは「SATySFi Advent Calendar 2018」の1日目の記事です。(2日目はhanachinさんです。)
とうとう始まりましたSATySFi Advent Calendar 2018!
頑張ってSATySFi関連の記事を増やしていきましょう。
はじめに
「SATySFiをいろいろな場面に使いたいので汎用性と高くしたい、けれども使いにくいのは嫌だ」という個人的な気持ちから、それらを両立するExDesignクラスを作成しています。
ある程度使えなくもない程度までできたのでここで、SATySFi ACを機に公開したいと思います。
GitHubで管理しています。リポジトリは以下の場所です。
この記事を読んで面白そうと思ったら是非使ってみてください。
動作保証環境
SATySFi v0.0.3と、SATySFi for Windows Version 20180708での動作を確認しています。
パッケージの導入の仕方
Linux系統の場合
$ git clone https://github.com/puripuri2100/exdesign.git
でリポジトリをcloneしてきます。
そして
$ cd exdesign
でフォルダに移動し、
$ chmod u+x Installer.sh
$ ./Installer.sh
を打ち込めば導入が終了します(パッケージ等が~/.satysfi/dist/packages
にある場合のみ有効)。
Ubuntu on WSLでは成功しましたが、失敗する環境があれば教えてください。
SATySFi for Windowsの場合
$ git clone https://github.com/puripuri2100/exdesign.git
でcloneしてくるところまでは同じですが、exdesign\satysfi-for-windows-ver
というフォルダ内にあるファイルをコピーしてSATySFi for Windowsでパッケージが収められているところ(標準ならば C:\Program Files\SATySFi\lib\dist\packages
)に移動させます。
OS Xの場合
Linuxと同じようにやってダメならば、ファイルをコピーしてSATySFiが読み込む場所においてください。
このOSは持っていないので、報告があると嬉しいです。
使い方
このパッケージでは、根幹となるexdesign.satyh
と、その補助パッケージがついてきます。
使う際にはこれらを読み込み、提供される関数を利用する必要があります。
documentの1つ目の引数のレコード型の中身は9つです。
title
ではタイトルを入力します。
author
では作者名を入力します。
date
では日付を入力します。
style
ではページサイズや余白、基本となるフォントサイズの設定を行います。
design
では+section
等のコマンドのデザインについての設定を行います。
header-footer
では、ヘッダーやフッターに出力する内容を設定します。
fonts
では、使用するフォントを設定します。
基本的には以下のように書けばよいです。
@require: exdesign
@require: article-ja
document (|
title = {title};
author = {puripuri2100};
date = {2018/11/04};
show-title = true;
show-toc = true;
style = ArticleJa.a4paper;
design = ArticleJa.article;
header-footer = ArticleJa.normalHF;
fonts = ArticleJa.fonts;
|) '<
+p{test}
>
ArticleJa.a4paper
ArticleJa.article
ArticleJa.normalHF
ArticleJa.fonts
はarticle-ja.satyh
によって提供されているものです。
ちなみに、article-ja.satyh
では他にもb5paper
とreport
という関数も提供しています。
ExDesignパッケージが提供しているコマンドについてはdoc/manual.saty
をコンパイルして読んでください。使い方は基本的にstdjabookクラスと似たようなものになっているはずです。
仕組み
いきなり補助パッケージどうのこうの言われてもわからないと思うので説明します。
そもそもとして、世の中にあるクラスファイルというものの中身は、フォントサイズ等の値を変えるても機能を失わないものと、+section
等の仕組みとして提供しなければならないものにわかれています。
そこで、その仕組みとして提供しなければ成立しないようなものを提供し、値を変えられるものについてはユーザーが全て指定してレイアウトを作っていくという使い方を想定したクラスファイルを作成しました。それがこのExDesignクラスです。
しかし、値を変えられるものについて、文書ごとに全て指定していくのは非常に辛いものがありすので、頻繁に使うであろう設定をまとめて提供することにしました。それが補助パッケージです。
構造としては次の画像のようなものになっています。
これを使うと嬉しいこと
ページのサイズを自由に変更したり、自分好みのフォントを使ったりすることができるようになります。
また、よく使う設定はパッケージとして自分用にまとめておけばさらに楽に使うことができます。
「どうしてもヒラ◯ノフォントを使いたい!」といった人も、フォント名を設定した関数を定義しておけばいつでも使えるわけです。
例えば、「B5のサイズでレポート書いてきて」と言われたとき、stdjareport等では中身に直接手を加える必要がありましたが、ExDesignクラスと自分用の補助パッケージを使えば
@require: exdesign
@require: mysettings
document (|
title = {雪だるまの可愛さ};
author = {puripuri2100};
date = {2018/12/01};
show-title = true;
show-toc = false;
style = MySettings.b5paper;
design = MySettings.report;
header-footer = MySettings.myHF;
fonts = MySettings.kozuka;
|) '<
+p{雪だるまは可愛いです。}
>
のようにしてすぐに書き始めることができます。非常に便利です!是非使ってみてください。
さいごに
現在もこのクラスファイルは開発を続けています。多くの人が多種多様な補助パッケージを作成してくださると嬉しいです。また、新しい機能を提案してくださるともっともっと嬉しいです。お待ちしています。