Skip to content

yamaimo/TexGoodByeTool

Repository files navigation

TeXグッバイしたいツール

『TeXグッバイしたい本』の組版に使用しているツール。

以下、自分用のメモ:

準備

以下のgemを使ってるので、必要ならインストールしておく。

$ gem install redcarpet ox chunky_png

原稿を書くリポジトリからgit submodule addする。

# 原稿のあるディレクトリへ
$ cd path/to/script/

# tool/というディレクトリに持ってくるとする
$ git submodule add git@github.com:yamaimo/TexGoodByeTool.git tool

Rakefileをコピー。

$ cp tool/Rakefile .

setting.rb.sampleをコピーして編集。

$ cp tool/setting.rb.samaple setting.rb
$ vi setting.rb

setting.rbで使えるDSLはlib/setting_dsl.rbを参照。

原稿のリポジトリで差分をコミットしておく。

原稿のタイプセット

rakeでタイプセット。

そのままPDFを開きたい場合はrake open

PDFを削除したい場合はrake clean

setting.rbで設定されたターゲットに対してビルド、オープンもできる。

# setting.rbでchap1というターゲットが設定されている場合:
$ rake build[chap1]
$ rake open[chap1]

マクロについて

Jinja-likeなマクロを使える。

\{{}}で囲んだ式は評価されて埋め込まれる。

\{%%}で囲んだコードは実行される。

\{##}で囲んだ部分はコメントとして無視される。

\{{などの開始タグをエスケープしたい場合、 \\{{のように直前にバックスラッシュをつける。

マクロで参照したいコードは、それを定義したファイルを設定で指定する。

マクロで数行の空きを作る例

(原稿)

\{# 関数empty_lineはmacro.rbで定義 #}
\{{ empty_line 3 }}

(出力例)

{# 関数empty_lineはmacro.rbで定義 #} {{ empty_line 3 }}

マクロでコードを埋め込む例

(原稿)

\{% require 'pathname' %}
\{% file = Pathname.new("lib") / "sfnt_font_type.rb" %}
\{{ File.readlines(file)[0..59].join.chomp }}

(出力例)

{% require 'pathname' %}
{% file = Pathname.new("lib") / "sfnt_font_type.rb" %}
{{ File.readlines(file)[0..59].join.chomp }}

ツールの更新/同期

ツールを修正する場合、tool/ディレクトリで変更してツールのリポジトリへコミットすればいい。

原稿で使用するツールを特定のコミットにしたい場合、 tool/ディレクトリでツールのリポジトリから使いたいコミットをチェックアウトし、 原稿のリポジトリで差分(参照するコミットの変更)をコミットすればいい。

原稿のリポジトリで参照しているコミットとtool/のコミットがズレてるとき、 原稿のリポジトリでgit submodule updateをすれば、 原稿のリポジトリが参照しているコミットの内容になる。

その他

リポジトリに含まれる以下の雪だるまの画像は「いらすとや」さんのもので、 著作権は「みふねたかし」氏にあります。

雪だるま

https://www.irasutoya.com/2012/10/blog-post_22.html

About

TeXグッバイしたいツール

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages