Skip to content

Instantly share code, notes, and snippets.

@kauplan
Last active March 13, 2023 21:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kauplan/e905f35d9e0d21cc65678a8c7d17f0bd to your computer and use it in GitHub Desktop.
Save kauplan/e905f35d9e0d21cc65678a8c7d17f0bd to your computer and use it in GitHub Desktop.
Re:VIEW Starter 更新履歴

ReVIEW Starter ChangeLog

2021-07-15

新機能

  • 追加されたテキストを表す @<ins>{...} を追加(Re:VIEW 5.1に追従)
    • 通常の本文で使うと、下線が引かれる(Re:VIEWと同じ)
    • プログラムコード(//list)やターミナル(//termianl)の中で使うと、太字になる(Starter拡張)

バグフィックス

  • [bugfix] ==[notoc] なら「目次なし、かつ節番号なし」になるべきなのに、「目次なし、かつ節番号あり」になっていたのを修正

2021-07-09

今回はバグフィックスリリース。

変更点

  • プログラムコードやターミナルが引用文の中にあるときは、背景色をつけないように変更。 従来は引用文中のプログラムコードの途中で改ページができなかった。その制限を回避するのが目的。
  • 図番号なしで図を表示する //indepimage インライン命令の第2引数に説明文字列を指定したとき、従来は「図:」という接頭辞がついていたのを、つけないように変更。

バグフィックス

  • [bugfix] プログラムリストやターミナルや @<code>{} の中で、シングルクォートとバッククォートが正しく表示されていなかったのを修正
  • [bugfix] プログラムリストやターミナルの中で @<ul>{} を使うとエラーになっていたのを修正
  • [bugfix] //indepimage//image と同じオプションを受け取るように修正。
  • [bugfix] //indepimage の説明文字列が明朝体だったのをゴシック体に修正。
  • [bugfix] 会話リストの直前に余計な空きが入っていたのを削除
  • [bugfix] プログラムコードやターミナルの中で、#@ から始まる行を読み飛ばすように修正(Re:VIEWと同じ仕様にするため)。従来は #@# で始まっている行のみを読み飛ばしていた。

2021-06-30

今回の目玉:

  • rake setup:rubygems
  • 単語展開
  • 索引機能
  • 塗り足し

新機能

セットアップ

  • rake setup:rubygems を実行すれば、必要な Ruby ライブラリがインストールされるようになりました。 実は macOS 付属の Ruby を使うと gem install review がエラーになるので、その対策です。 詳しくはユーザーズガイド第1章を見てください。
  • rake setup:dockerimage を実行すれば、必要な Docker イメージがダウンロードできるようになりました。 macOS のように標準で Ruby がインストールされている場合では少し便利でしょう。 そうでない場合は従来通り docker pull kauplan/review2.5 を実行してください。

単語展開機能

  • キーに対応した単語へ展開する機能を実装しました(実装済みのつもりがしてませんでした。ごめん)。 たとえば単語展開用の辞書ファイルにキー「apple」と単語「アップル」が登録されているとしたら、@<w>{apple}アップル に展開されます。
  • この機能を使うと、表記を「Apple」と「アップル」のどちらにするか決まってなくても、あとから簡単に表記を変えられます。
  • @<wb>{} は展開してから太字にします。
  • @<W>{} は展開してから強調表示します。
  • 単語展開用の辞書ファイルは config.ymlwords_file: data/words.txt で指定します。 CSVファイル (*.csv) またはタブ文字区切りのファイル (*.txt or *.tsv) が指定できます。 文字コードは UTF-8 限定です。
  • デフォルトで辞書ファイル data/words.txt が提供済みなので、設定をしなくても単語展開機能が使えます。

用語と索引

  • 索引に登録する @<idx>{}@<hidx{}> に、よみがなを埋め込めるようになりました。 @<idx>{用語((よみがな))} のようにします。
  • 用語を表すインライン命令 @<term>{} を追加しました。 @<term>{用語((よみがな))} のようにするとゴシック体で表示され、かつ巻末の索引に登録されます。 初登場の用語には @<term>{} を使い、再登場の用語には @<idx>{} を使うといいでしょう。
  • @<term>{} と似たインライン命令 @<termnoidx>{} を追加しました。 これは用語をゴシック体で表示するものの、索引には登録しません。 @<hidx>{} と組み合わせて使うことを想定しています。
  • 用語の中にインライン命令を含められるようになりました。 たとえば @<term>|@<LaTeX>{}((latex))| のように書けます。 ただし実装上の都合で @<term>{@<foo>{}} のようには書けないので、@<term>|@<foo>{}| と書いてください。
  • 親子関係にある用語において、表示順が「親→子」ではなく「子→親」のときも対応できるようになりました。 たとえば「スパイ」という用語がすでにあった場合、「二重スパイ」は親用語が「スパイ」で子用語が「二重」ですが、表示上は子である「二重」が先、親である「スパイ」が後です。 このような場合は @<term>{スパイ<<>>二重---} のように書けば、本文には「二重スパイ」と表示され、かつ索引には「スパイ」の子要素として「二重---」が表示されます。
  • 索引の中で、ページ番号のかわりに転送先となる用語を指定できるようになりました。 たとえば @<term>{ポスグレ==>>PostgreSQL} と書くと、索引の中で「ポスグレ」の項目にはページ番号のかわりに「→PostgreSQL」と表示されます。
  • 用語のよみがな辞書をデフォルトで用意するようになりました(ファイル名は data/terms.txt)。
  • 巻末の索引のデザインを変更しました。
    • 用語とページ番号の間を連続したピリオドで埋める。
    • 用語のグループ化を「あ い う …」のような文字単位ではなく、「あ か さ …」のような行単位に変更。
    • 索引のデザインを指定するファイル sty/indexstyle.ist を追加。
  • 索引機能をオンにしたときのLaTeXコンパイル回数を最小限に抑えるよう変更しました。 前回のコンパイル時と比べて索引情報に変化がなれれば、後続のLaTeXコンパイルをスキップします。

塗り足し

  • 印刷用PDFにおいて、上下3mmずつの塗り足しを指定できるようになりました。 config-starter.ymlbleedsize: 3mm をつけると、印刷用PDFでのみ塗り足しがつきます。 上下左右3mmずつ伸びるので、用紙サイズが縦横に6mmずつ大きくなります。 ただし本当に必要な場合でのみ指定してください。通常は必要ありません。
  • 塗り足し部分に色つきの先を引くことで、塗り足しの大きさを確認できます。 config-starter.ymlbleedcolor: blue と設定してください。 これはあくまで確認用なので、入稿するときは設定を外してください。

その他

  • 生成するLaTeXファイルの先頭に \RequirePackage{plautopatch} を追加するようになりました。ユーザへの影響はありません。 Docker環境のTeXLive 2018では plautopatch.sty がないようなので、キャンセルしました。

バグフィックス

  • [bugfix] サブタイトルが空のときに、大扉に「ー ー」と表示されていたバグを修正しました。
  • [bugfix] HTML 生成時に @<hlink>{url} がエラーになっていたのを修正しました。
  • [bugfix] デバッグオプションをオフにしたときにコンパイルエラーになっていたのを修正しました。

2021-03-14

今回の目玉:

  • 大扉と奥付のPDFファイルを指定可能
  • 表紙のPDFから塗り足しを除いて取り込み可能
  • Markdownへの変換とtextlintによる文章チェックをサポート(制約あり)
  • 技書博向けに、発行責任者と連絡先を奥付に記載する設定を用意
  • コラムの中で図や表が書けなかった不具合を修正

新機能

  • 表紙や裏表紙と同様に、大扉(タイトルページ)と奥付のPDFファイル名も指定できるようになりました。 大扉や奥付をIllustratorやKeynoteで作成している場合は指定するといいでしょう。 具体的には config-starter.yml で以下の項目を設定します。
    • titlepage_pdffile: … 大扉(タイトルページ)
    • colophon_pdffile: … 奥付
  • 表紙や裏表紙のPDFを電子用PDFに取り込むときに、塗り足し部分を自動的に取り除けるようになりました。 やり方は、config-starter.ymlで指定するPDFファイル名の後ろに * をつけるだけです。 従来は電子用PDFに塗り足しがあるPDFを取り込むと、上下に空きが入っていました。

  • (実験的機能)表紙や大扉のPDFファイルを取り込むときに、ページ番号を指定できるようになりました。 たとえば「frontcover_pdffile: cover.pdf<2>」と指定すれば、cover.pdf の2ページ目を取り込みます。 「*」と同時に指定するには「frontcover_pdffile: cover.pdf<2>*」のように指定します。

  • 原稿をMarkdownファイルへ変換できるようになりました。「rake markdown」または「rake docker:markdown」を実行すると、「xxxxx-md」フォルダにMarkdownファイルが生成されます。 なおこの機能は、textlintによる原稿チェックを行うために用意されました。textlintで読み取れればいいという割り切りをしているので、Markdownへの正確な変換は期待しないでください。

  • textlintで原稿をチェックできるようになりました。最初に「rake textlint:setup」または「rake docker:textlint:setup」を実行してから、「rake textlint」または「rake docker:textlint」を実行してください。 なおデフォルトでは preset-ja-technical-writing だけが有効化されています。 詳しくは https://github.com/textlint/textlint/wiki/Collection-of-textlint-rule#rule-presets-japanese を参照してください。

  • 技書博5から、奥付に「発行責任者」と「連絡先」の記載が必要になったので、これらを設定できるようにしました。プロジェクト作成画面で入力するか、または config.yml の「additional:」という設定項目を設定してください。

仕様変更・機能変更

  • 表紙や裏表紙に使うPDFファイル名の設定が、config.yml から config-starter.yml に移動しました。

    • config.yml の以下の設定項目は:
      • coverpdf_files: … 表紙のPDFファイル名
      • backcoverpdf_files: … 裏表紙のPDFファイル名
      • coverpdf_option: … 位置の微調整
    • config-starter.yml に移動し、項目名も変わりました。
      • frontcover_pdffile: … 表紙のPDFファイル名
      • backcover_pdffile: … 裏表紙のPDFファイル名
      • includepdf_option: … 位置の微調整
    • config.yml に古い設定項目が残っていると、rake pdf がエラーメッセージを出します。
  • 表紙や裏表紙のPDFファイルを取り込むときに、位置の微調整が必要なくなりました。 従来は「coverpdf_option: "offset=-2.3mm 2.3mm"」のような微調整が必要でしたが、これが自動的に調整されるようになりました。

  • インデントを可視化したプログラムコードをマウスでコピペしたときに、インデント記号がコピペされないうになりました。 従来はパイプ記号「|」を使ってインデントを表示していましたが、これを図形として縦線を描写するように変更しました。 この変更に伴い、インデント記号の見た目が少し変わりました。

  • layouts/layout.tex.erb を大幅に書き直しました。

  • 新しく sty/review-base.sty というLaTeXスタイルファイルを作成し、Re:VIEWのマクロを layouts/layout.tex.erb からそちらに移動しました。

  • 新しく sty/starter-misc.sty というLaTeXスタイルファイルを作成し、LaTeXマクロを sty/starter.sty からそちらに移動しました。

  • mystyle.sty」が読み込まれる順番が、「mytitlepage.sty」と「mycolophon.sty」のあとになりました。従来はこれらより先に読み込まれていました。 この変更は、「mytitlepage.sty」や「mycolophon.sty」で定義されたマクロを「mystyle.sty」で上書きできるようにするためです。 なお読み込み順序を戻すには、「config.sty」の設定項目「texstyle:」を変更してください。

  • config-starter.yml の設定値 needvspace: のデフォルト値を 4.6zh から 4.0zh へと少し減らす調整をしました。

バグ修正

  • コラムの中や(ノートを除く)ミニブロックの中で、図や表が置けなかったバグを修正しました。 ただしLaTeXの制限により、これらの中では「pos=h」や「pos=b」のような位置指定ができません。指定するとエラーが出ます。

  • 図の位置指定(//image[][][pos=ht] のようなオプション)がLaTeX側にうまく伝わっていないことがあったバグを修正しました。

  • 説明書きのリスト「//desclist」において、説明文の先頭に不要な1/4空きが入ることがあったのを修正しました。

  • エラー文字列を赤く表示する機能がDockerでは無効になっていたので、有効にしました。

2021-03-08

映画『プリンセス・プリンシパル Crown Handler 第1章』3週目! NetFlixでTVシリーズが配信開始! まず6話まで見て!

今回の目玉:

  • 節 (Section) タイトルに新しいデザインが追加
  • //info//caution//warning にアイコンが追加
  • 印刷用PDFにデフォルトでノンブルがつくように
  • 章 (Chapter) と部 (Part) の開始番号を指定可能に
  • 全角文字を強制的に半角2文字分の幅で表示する機能を追加

新機能

  • 節(Section)タイトルの新しいデザインが追加されました。 節タイトルが長くて2行になってしまっても破綻しないデザインですが、1行のときでも2行分の高さを必要とするので、既存のデザインより若干ページ数が増えることに注意してください。 使うには設定ファイル「config-starter.yml」に「section_decoration: circle」を設定してください。
    Sectionタイトルの新しいデザイン

  • 補足情報を表す「//info」と、注意喚起を表す「//caution」と、警告を表す「//warning」に、アイコン画像がつくようになりました。アイコン画像はパブリックドメインにするので、商用・非商用問わず利用できます。また再配布も自由に行って構いません。
    アイコン画像つき

  • 印刷用PDFにデフォルトで隠しノンブルがつくようになりました。 またノンブルの位置やフォントサイズを設定ファイルで指定できるようになりました。 ノンブルをつけたくない場合は、config-starter.yml で「nombre: off」を設定してください。 なお「rake pdf:nombre」も引き続き使用できます。

  • 章(Chapter)と部(Part)の開始番号を指定できるようになりました。 たとえば「第0章」から始めたり、上下巻に別れた本で下巻を「第IV部」から始めることができます。 具体的には、設定ファイル「config-starter.yml」に「chapter_startnumber: 0」や「part_startnumber: 4」を指定します。

  • プログラムコードやターミナル画面において、全角文字の幅がちょうど半角2文字分になる機能を用意しました。 「//list」や「//terminal」の第3引数に「widecharfit=on」というオプションをつけてください。

  • 出力結果を表す「//output」を用意しました。これは「//list」や「//terminal」とよく似ていますが、プログラムコードではなく出力結果や変換結果を表します。 また全角文字の幅がちょうど半角2文字分になる機能が、デフォルトでオンになっています。 具体的な用途としては、たとえば自動生成されたHTMLやCSS、あるいはSQLの実行結果の表示などを想定しています。

  • 環境変数「$STARTER_XXXX」のかわりに「rake pdf」のオプションが使えるようになりました。 環境変数の設定はITエンジニア以外には敷居が高かったので、それを少しでも是正するのが目的です。

    • rake pdf t=ebook」で電子用PDFが、また「rake pdf t=pbook」で印刷用PDFが生成されるようになりました。従来は環境変数「$STARTER_TARGET=ebook」を設定する必要がありました。
    • rake pdf c=xxxxx」で、指定した章ファイル「xxxxx.re」だけがコンパイルされるようになりました。従来は環境変数「$STARTER_CHAPTER=xxxxx」を設定する必要がありました。
    • rake pdf n=1」で、LaTeXのコンパイルが1回だけに制限できるようになりました。ページ番号が合ってなくてもいいから素早くPDFの生成結果が見たい場合に有用です。従来は環境変数「$STARTER_COMPILETIMES=1」を設定する必要がありました。
    • rake pdf d=on」で、ドラフトモードでLaTeXコンパイルするようになりました。ドラフトモードでは画像の読み込みがされず、画像と同じ大きさの枠線が引かれるだけなので、画像の多いドキュメントだとPDF生成が高速になります。従来は環境変数「$STARTER_DRAFT=on」を設定する必要がありました。
  • 章の著者を表記する「//chapterauthor[〈著者名〉]」を用意しました。 複数の著者で書かれる合同誌で使うといいでしょう。 著者名は章タイトルと章の概要の間に書いてください。

機能追加・修正

  • //list」や「//terminal」のしくみを大きく変え、LaTeXのalltt環境やseqsplitパッケージを使わなくなりました。 これはコードハイライト機能を導入するための下準備です。 もし「//list」や「//terminal」まわりで不具合があればお知らせください。

  • プログラムコードやターミナル画面において長い行が折り返しされたとき、折り返し箇所が日本語でも折り返し記号がつくようになりました。 以前は折返し箇所が英数字や記号でないと折り返し記号がつきませんでした。

  • Dockerを含め、どの環境で「rake pdf」を実行してもLaTeXのコンパイル時間をRubyで計測して表示するようになりました。従来は「/usr/bin/time」コマンドがないと表示しませんでした(そしてDocker環境には「/usr/bin/time」がなかったので表示されませんでした)。 それ以外のコマンドでは実行時間は計測されません。

  • 「はじめに」の章に凡例をつけました。

  • タイトルページのデザインを少し変更しました。

  • ユーザーズガイドの文章を見直しました。

バグ修正

  • 会話機能を使うとHTMLやePubにヌル文字が入ってしまうバグを修正しました。

  • 会話機能を使うとePubが生成できないバグを簡易修正しました。

  • 節 (Section) や項 (Subsection) のタイトル直後に改ページされることがあったのを修正しました。

  • 画像の配置位置を指定する「//image[][][pos=...]」において、「pos=p」(独立したページに画像を配置する)を指定するとエラーになっていたバグを修正しました。

  • 部 (Part) が指定されているときに rake web がエラーになるのを修正しました。

  • //info」や「//warning」や「//caution」において、第1引数のキャプションを省略した場合にエラーとなっていたのを修正しました。

  • 章の概要を表す「//abstract」が入れ子対応になっていなかったのを修正し、箇条書きや他のブロック命令が入れられるようになりました。

2021-02-22

映画『プリンセス・プリンシパル Crown Handler 第1章』上映映画館拡大記念! 今なら映画の冒頭7分がYouTubeで見れます!

今回の目玉:

  • 会話形式をサポート
  • プログラムコードをデフォルトで行番号つきやインデント記号つきに変更可能に
  • 画像の表示幅を「width=40mm」のように指定可能に
  • 定義リストの中で箇条書きが記述可能に
  • エラーメッセージを赤く表示

新機能:会話形式

  • 会話形式をサポートしました(チャット風ではないことに注意)。アイコン画像を使う方法と使わない方法の両方に対応します。詳しくはユーザーズガイドを参照してください。
    • アイコン画像を使った会話形式サンプル:
      アイコン画像を使った会話形式
    • アイコン画像を使わない会話形式サンプル:
      アイコン画像を使わない会話形式

定義リスト

  • 定義リスト(いわゆる<dl><dt><dd>)において、説明書きの中に箇条書きを入れられるようになりました。ただし実装上の都合により、インデントにタブを使うと箇条書きが認識されません。インデントは半角空白で行ってください。
 : ムスカ名言集
    ムスカの代表的なセリフを紹介します。
     * ラピュタは滅びぬ、何度でも蘇るさ。
     * 3分間、待ってやる。
     * 目が〜、目が〜
  • 定義リストとよく似た「説明リスト」を用意しました。定義リストと比べて、太字にする・しないが選べる、コンパクトな表示にできる、箇条書きに加えてプログラムコードを含められる、などの利点があります。ただしブロック命令を使うので、「:」だけで済む定義リストと比べると記述は煩雑になります。詳細はユーザーズガイドを見てください。
    説明リストのサンプル:
    説明リストのサンプル

  • 定義リストの中で空行を入れると、改段落になるよう変更しました。また第2段落以降では、先頭行が全角1文字分インデントされます。

  • 定義リストの語句(HTMLでいうところの <dt> の部分)に「[」または「']'」が複数回登場すると、表示が崩れる不具合があったのを修正しました。なおこの不具合はRe:VIEWに起因します。

  • 定義リストの語句と説明文の間では改ページされないように修正しました。

プログラムコード

  • プログラムコードは「//list[][][indent=4,lineno=1]」のように第3引数にオプションを指定できます。 このオプションのデフォルト値を、設定ファイル config-starter.yml で変更できるようになりました。 これにより、たとえばデフォルトで行番号をつけたり、インデント幅を指定したり、改行文字を表示したりできるようになります。

  • 設定ファイル「config-starter.yml」から、設定項目「program_fontsize:」と「terminal_fontsize:」が削除されました。 かわりに、1つ上で説明したオプションのデフォルト値を「fontsize: small」のように変更してください。 これは後方互換性のない変更なので注意してください。

  • インデント幅の指定方法が、「indentwidth=4」から「indent=4」に変更されました。この変更は、より短い名前で指定できるようにするためです。 なお後方互換性のために、「indentwidth=4」も受け付けます。

  • プログラムコードやターミナル画面の、フォントや枠や折返し文字などの色を指定できるようになりました(従来は背景色しか指定できませんでした)。色の指定は sty/starter-color.sty で行ってください。

  • //list[][][classname=XXX]」や「//terminal[][][classname=XXX]」のように、HTMLタグのクラス名を指定できるようになりました。 HTMLやePubのときだけ機能します。

  • PDFのテキストをマウスで選択したとき、行番号や折り返し記号や改行文字を選択対象から外す機能が実装されました。ただしこの機能を有効にするとコンパイル時間が大幅に増えるため、デフォルトではオフです。またこの機能はAcrobat Readerでのみ有効であり、macOSのPreview.appでは機能しないので注意してください。 機能をオンにするには、config-starter.ymlで「exclude_mouseselect: true」を設定するか、環境変数「$STARTER_EXCLUDE_MOUSESELECT=on」を設定してください。

画像

  • 画像を読み込む「//image」ブロックコマンドの第3引数に、画像の幅を直接指定する「width」オプションを追加しました。たとえば「//image[][][width=50%]」と指定すると、必ず本文幅の半分の幅で画像を表示します。「scale=0.5」との違いはユーサーズガイドを参照してください。 また「50%」のような比率だけでなく、「150px」や「50mm」のような絶対値も指定できます。

コンパイル

  • 環境変数「$STARTER_CHAPTER」が指定されている場合は、LaTeXのコンパイルが1回だけになりました。「$STARTER_CHAPTER」を設定するのはコンパイル結果を素早く確認するためであり、ページ番号がずれていても気にしない場合であるため、コンパイルを1回だけにしてコンパイル時間を短くしました。

  • コンパイル時のエラーメッセージを赤い字で表示するようにしました。これによりエラーメッセージを見逃すことが少なくなるはずです。

  • //image[画像ファイル]」で、画像ファイルが見つからないときは即時にコンパイルエラーにするよう変更しました。従来はエラーではなく警告だったため、画像ファイル名を間違えても気づかないことが多かったので、その対策です。

  • /usr/bin/time」が存在するときは、LaTeXのコンパイル時間をtimeコマンドで表示するようにしました。残念ながらDocker環境には「/usr/bin/time」がないので、コンパイル時間は表示されません。

  • Starterでは環境変数「$STARTER_COMPILETIMES=」を設定すると、LaTeXのコンパイル回数が1回だけに制限されます。これはページ番号が合ってなくてもいいからとにかく仕上がりを確認したい場合に便利です。 この機能がユーザーズガイドに書かれていなかったので、第2章に書き足しました。

その他

  • 縦方向の空きを入れるブロック命令「//vspace」を追加しました。マイナスの値を指定することで、空きを減らすこともできます。使い方://vspace[latex][5mm]

  • ブロック命令の終了部「//}」を厳密に判定するようにしました。今までは「//}」のあとに文字が続いていても意図せず終了部とみなされていましたが、今度からはみなされなくなります。

2021-02-11

Princess Principal:Crown Handler』映画公開記念! 今ならYouTubeで全話視聴できます!

今回の目玉:テーブル関連を大きく強化

テーブル関連

  • テーブルをCSV形式で書けるようにしました。//table[][][csv=on]{ ... //}のように指定すると、中身をCSV形式で書けます。
  • テーブルのデータを外部ファイルから読み込めるようにしました。//table[][][file=data/data1.csv, encoding=sjis]のように指定します。文字コードは省略可(デフォルトはutf-8)。
  • //table[][][hline=off]とすると、行ごとの罫線がつかなくなります。またこのとき、表データに空行があると罫線が引かれます。
  • //table[][][pos=b]のようにすると、テーブルの挿入位置を指定できます(t: top, b: bottom, h: here, H: here (forcedly), p: 別ページ)。
  • //table[][][fontsize=x-small]のようにすると、フォントサイズを小さくできます(medium/small/x-small/xx-small/large/x-large/xx-large)。
  • //table[][][headerrows=1]のようにすると、============------------で区切らなくても、先頭行をヘッダとみなしてくれます。これは外部CSVファイルを読み込むときに便利です。
  • //table[][][headercols=2]のようにすると、左2つのカラムをヘッダとして表示します。「headerrows=1」と同時に指定すると、上と左をヘッダにできます。
  • テーブルのキャプションがなくても、参照用のラベルが指定されれば「表1.1」のように出力するよう変更しました。これはRe:VIEWの仕様がおかしいです。なので修正しました。
  • //table[?]のようにすると、重複しないラベル名を自動的に割り当てるようにしました(//list[?]と同じ機能)。ただし@<table>{?}のようには参照できません。
  • //tsize[|latex||lcr|]のような指定を//tsize[latex][|lcr|]のように書けるようにしました。このほうがずっと分かりやすいです。
  • テーブルの内容を画像で用意する「//imgtable」が動かなかったのを修正しました。
  • //imgtable[][][pos=b]」のように挿入位置を指定できるようになりました。

LaTeX関連

  • LaTeXでコンパイルする前に、LaTeXコマンドが使用できるかを確認するよう変更しました。これは何らかのトラブルが起こったときに、初心者が問題の切り分けをするのに役立ちます。
  • LaTeXコマンドの出力を捨てることで、コンパイル時の表示をコンパクトにしました。ただしLaTeXのコンパイルが失敗した場合は、エラーメッセージを表示します。
  • dvipdfmxでPDFを生成しカレントディレクトリにコピーしていたのを、dvipdfmxの -o オプションを使うことで、PDFをカレントディレクトリに直接生成するよう変更しました。コピーがなくなったのでディスクへの書き込み量が減り、SSDの寿命に優しくなりました。
  • config.ymlの「dvioptions:」に「-q」を追加することで、dvipdfmxの出力を減らしました。

その他

  • //list[][][file=src/foo.js]」のようにすると、プログラムコードを外部ファイルから読み込めるようになりました。従来の「@<include>{}」を使った方法も引き続き使用できます。
  • 長いURLが単語の途中でも折り返すようにしました。従来はパス区切り「/」のところでしか折り返しされませんでした。詳しくは https://gist.github.com/kauplan/f3729580bf6f083438f183873c93702a を見てください。
  • 改段落する「@<par>{}」を用意しました。箇条書きの中のように空行を入れられない場合でも段落を改めたい場合に、使うと便利です。
  • マニュアルの付録A『Re:VIEWとの差分』とを執筆しました。

2020-07-07

今回は多数の新機能と変更点、そして重要なバグ修正を含んでいます。

https://twitter.com/_kauplan/status/1280486590175784965

  • ユーザーズガイドを新規に書き起こしました(トップページからダウンロード可能)。このガイドを読めば、Re:VIEWのマニュアルなしでStarterが使えるようになります。このようなガイドを作ったのは、Re:VIEWとのかい離が大きくなったからです。

  • LaTeXにおける\chapter\sectionのマクロ定義を完全に置き換えました。新しいマクロ定義はテンプレートメソッドパターンを使った設計なので、必要な箇所のマクロだけを書き換えれば済みます。これで大幅にカスタマイズしやすくなりました。

  • starter.styが1500行を超えたため、複数のファイルに分割しました。これにより、目的のLaTeXマクロを探しやすくなるでしょう。たとえば\chapter\sectionの新しいマクロ定義はstarter-heading.styにあります。

  • PDFのページサイズ、フォントサイズ、本文幅の指定が、config-starter.yml だけでてきるようになりました。以前はLaTeXの知識が少し必要でしたが、その必要がなくなり、とても簡単に変更できます。

  • 裏表紙のPDFを指定できるようになりました。config.ymlの最後のほうにある「backcoverpdf_files:」という設定項目に、裏表紙のPDFファイル名を指定します。

  • PDFファイルの「目次(しおり)」が生成できないバグを修正しました。

  • ファイル名を表す@<file>{}を追加しました。ゴシック体で表示します。

  • ターミナル画面においてユーザが入力するコマンドを表す@<userinput>{}を追加しました。下線をつけます。

  • @<href>{}とよく似た@<hlink>{}を追加しました。@<href>{}はデフォルト設定ではURLを脚注に書くのに対し、@<hlink>{}は脚注に書かずリンクになります。

  • 指定された高さのスペースがなければ改ページをする//needvspace[latex][6zw]コマンドを用意しました。この例なら全角6文字分の高さのスペースがなければ改ページします。プログラムのキャプション直後で改ページされるのを防ぐときに使います。

  • デフォルトで原稿ファイルを「contents/」に置くようにしました。これまでと違うので注意してください。

  • 目次のデザインを変更しました。項(Subsection)を全角2文字分字下げし、また項に番号がない場合はクローバー記号がつくようになりました。

  • プログラムコードにデフォルトで枠がつくよう変更しました。つけたくない場合はconfig-starter.ymlで「program_border: false」を設定してください。

  • プログラムコードの枠の色を、黒からグレーに変更しました。これで枠がついてもあまり気にならなくなりました。

  • 数式にラベルと説明文を指定できるようになりました。「//texequation[label][caption]{...//}」と指定してください。

  • @<eq>{label}」で数式を参照できるようになりました。

  • ePub対応を改善しました。ただしePub対応はまだまだなので、今後も改善を続けます。

  • 「rake clean」タスクで「.pdf」「-pdf」「.epub」「-epub」が消されるようになりました。

  • @<br>{}」の直後の行頭で少し空白が入るバグが修正されました。

  • ePubやHTMLにおいて、「@<B>{}」が入れ子に対応していなかったのを修正しました。

  • ノート以外のミニブロック(memo, info, tip, warning, important, caution, notice)のデザインを、Re:VIEW標準の残念なデザインから、シンプルなデザインへと変更しました。またデザインのカスタマイズ方法をガイドに書きました。

  • プログラムコードの説明文(キャプション)の直後での改ページを防ぐ仕組みが新しくなりました。仕組みが単純になったので、以前のように時々おかしな挙動をすることがなくなりました。

  • テーブルのヘッダを太字にしました。

  • テーブルと説明文(キャプション)の間のスペースが広すぎたのを修正しました。

2020-03-23

今回の目玉:HTMLプレビュー機能。原稿を修正すると自動的にリロードされるので、執筆を大いに助けてくれるでしょう。

https://twitter.com/_kauplan/status/1242103211638439936

  • (実験的機能)HTMLプレビュー機能を用意しました。原稿ファイルを更新すると自動的にリロードします。HTMLなので、PDFを完全再現はできない(特に数式は再現できない)ものの、たいていの入力ミスはこの機能ですぐに見つかります。 プレビュー機能の使い方
    • 「rake web:server」(または「rake docker:web:server」)でサーバを起動し、
    • http://localhost:9000/ にアクセスし、適当な章を開く。
    • 開いた章と対応する原稿ファイル(*.re)を変更すると、ブラウザの画面が自動的にリロード。 詳しくはマニュアル参照のこと。
  • インデントを表す縦線をつける「//line[][][indentwidth=4]」が、HTMLでも再現できるようになりました。PDFでの実装とは違い、「|」(パイプ記号)を使ってないので、コードをコピペしても「|」が含まれてしまうことがありません。
  • HTMLやePubのとき、@<small>{}@<weak>{} が入れ子にできないバグを修正しました。
  • image ディレクトリをたとえば「contents/images」のようなサブディレクトリにできるようになりました。config.ymlで「imagedir: contents/images」のように指定してください。
  • 「rake web」で生成されるHTMLのデザインが、config-starter.yml での設定を反映するようになりました。
  • 章タイトルページを作るとHTMLやePubの生成時にエラーとなるバグを修正しました。
  • プレビュー機能を実現するため、ReVIEW::WEBMakerクラスを書き直しました。

2020-02-22

今回の目玉:デザイン面の改善を進めつつ、内部構造を大きく変更しました。

https://twitter.com/_kauplan/status/1231105499778543617

  • PDF作成時に、リンクのURLを脚注に表示するように変更しました。たとえば「@<href>{URL, TEXT}」が、今までは「\href{URL}{TEXT}」というLaTeXコードに変換されましたが、これが「TEXT\footnote{\url{URL}}」になります。この機能はconfig-starter.ymlの「urllink_footnote: true」で制御できます。
    サンプル
  • 節 (Section) タイトルに新しいデザインを追加しました。タイトルが長くて二行になるような場合でも違和感のないデザインにしています。
    サンプル
  • 項 (Subsection) のタイトルデザインにおいて、シンボル(クローバー)つきと番号つきの両方を同時に選択できるようになりました(今まではどちらか一方しか選べませんでした)。これによりデザイン選択の幅が広がりました。
    サンプル
  • プログラムコードに行番号をつけるとき、Starterでは //list[][][lineno=1] のようにしていました。これがちょっと面倒だという人のために、//list[][][1] と書けるようになりました。
  • ノートにラベルをつけて参照できるようになりました。 「//note[labelA][キャプション]{ ... //}」でラベルをつけ、「@<noteref>{labelA}」で参照します。 また「//note[キャプション]」という書き方は引き続き利用できます(「//note[][キャプション]」とみなされます)。
  • lib/hooks/monkeypatch.rb が大きくなったので、複数のファイル(lib/ruby/review-*.rb)に分割しました。 またreview-ext.rbが大きくなったので、lib/ruby/review-*.rbへコードを移動しました。
  • LaTeXの再コンパイルが必要かを判定する方法が厳密になりました。今までは、章や節のページ番号が変わったことは検出できても、章や節のタイトルが変わったことを検出できてませんでした。今回から*.tocファイルのMD5を計算するようにしたため、検出が厳密になりました。
  • カラム「==[column]」を使ったときに、目次からカラムへのリンクが間違っていたのを修正しました。 また目次でのカラムの項目が少しきれいに表示されるようになりました。
  • プロジェクトに「.gitignore」を含めるようにしました。中身は大したことないので、好きなように書き換えて下さい。
  • プロジェクト作成画面で、イベント名に「技書博3」、印刷所に「しまや出版」を追加しました。
  • ダウンロードしたzipファイルがMacのFinderで解凍できない不具合に対応しました。

2020-02-04

https://twitter.com/_kauplan/status/1224697515192152066

  • 《実験的機能》本文のフォントが、プロジェクト開始時に選択できるようになりました。
    • フォントを細くする
    • ゴシック体にする ただしNotoフォントが必要なので、Docker環境でのみ使えます(MacTeXではNotoフォントをインストールしない限り使えません)。
      サンプル
  • docker用のrakeタスクを用意しました。「docker run --rm -v $PWD:/work ...」と入力していたのが「rake docker:pdf」で済みます。また環境変数「$STARTER_CHAPTER」なども継承されます。 他にもあるので、「rake help」を実行してみてください。
  • 表紙画像のPDFファイルを挿入する機能を用意しました。config.ymlに「coverpdf: cover.pdf」のように設定すると、電子用PDFでのみ、images/cover.pdfが先頭に挿入されます。ただしPNGやJPGは未サポート。詳しくはconfig.ymlの下のほうの説明を見てください。
  • コードブロックにインデントを表示する機能をつけました。「//list[][][indentwith=4]」のように指定すると、画像のようにインデント幅ごとに薄い縦線がつきます(見えにくいのでよく見てね)。Pythonプログラムで特にお勧めです。
    サンプル
  • @<code>{}@<tt>{} の中では、「!」「?」「:」「.」の直後の半角空白が2文字分で出力されていました(これはLaTeXの仕様らしい)。これは困るので、2文字分にせず1文字分で出力するよう修正しました。 詳細:https://twitter.com/_kauplan/status/1222764086657597440
  • デザイン上の理由により、「@<code>{}」の背景色に色をつけるよう指定しても、次の箇所ではつけないようにしました。
    • 章や節のタイトル
    • コードや図や表のキャプション この変更が困る場合は相談してください。
  • 《実験的機能》upLaTeXのかわりにXeLaTeXが使えるようにしました。 これは中国語を混在させる人向けであり、他の人は使わないでください。 XeLaTeX対応はまだ不完全なので、使う場合は相談してください。
    サンプル

2019-12-08

今回の目玉:インライン命令の入れ子に対応しました!!

https://twitter.com/_kauplan/status/1203512893490130944

  • インライン命令の入れ子ができるようになりました。たとえば @<strong>{@<TeX>{}}@<code>$func(@<i>{arg})$ のような書き方ができます。
    • ただし「@<m>」と「@<raw>」と「@<embed>」は対象外であり、入れ子のインライン命令を取れません。
    • またインライン命令の入れ子をしたくないときは内側で「@<nop>」を使ってください(@<nop>は引数をそのまま表示する機能)。 例:@<strong>$@<nop>{@}<TeX>{}$
  • 原稿ファイル(*.re)を置くディレクトリを指定できるようになりました。config.ymlでたとえば「contentdir: contents」と指定すると、原稿ファイルを「contents」というディレクトリに置けます。(この機能はRe:VIEW3と同じですが仕組みは違います。)
  • 文章中にコードを埋め込む「@<code>{...}」の背景色を薄いグレーにするオプションを用意しました。プロジェクト作成時に指定するか、またはconfig-starter.ymlにおいて「inlinecode_gray: false」を「true」に変更してください。
  • rake pdf」や「rake epub」を実行すると、必ずコンパイルされるように変更しました。従来はRe:VIEWの仕様により、たとえば原稿ファイルのタイムスタンプが更新されていないけど画像は更新されているような場合に、コンパイルがスキップされていました。
  • プログラムコードやターミナルの中で取り消し線「@<del>{...}」を使った場合でも、長い行が自動的に折り返されるようになりました(以前までは「@<del>{...}」を使うと折り返しされませんでした)。これを実現するためのLaTeXハックは骨が折れました。よくぞ実現してくれた!えらい!
  • Re:VIEW3で追加された「@<balloon>{}」をStarterにも追加しました。これはコード内でのふきだし説明を表します。なおRe:VIEWと違って、Starterではグレーで表示します。
  • リンクを表す「@<href>{url,label}」において、今まではurl中の「,」は「\,」のようにエスケープする必要がありました。これはわかりにくいので、urlとlabelの区切りを半角空白つきの「, 」にした場合はurl中の「,」をエスケープしなくても済むようにしました。
  • ルビを表す「@<ruby>{text,yomi}」において、今まではtext中の「,」は「\,」のようにエスケープする必要がありました。これはわかりにくいので、textとyomiの区切りを半角空白つきの「, 」にした場合はtext中の「,」をエスケープしなくても済むようにしました。

2019-10-22

今回の目玉:LaTeXのコンパイル時間を大きく減らすことに成功しました。

https://twitter.com/_kauplan/status/1186664100501176320

  • ReVIEW::PDFMakerクラスを全面的に書き換えました(ソースコードはlib/ruby/review-pdfmaker.rb)。「rake pdf」を実行すると新しいPDFMakerクラスが使われます。なお review-pdfmaker コマンドだと新クラスが使われず、新機能も使えません。
  • rake pdf」を実行するとLaTeXのコンパイルが3回行われていましたが、これが1回または2回に減りました(PDFMakerを書き直したおかげ)。その分、コンパイル時間が短くなりました。ただし索引を作るよう設定した場合はコンパイル回数がもう1回増えます。
  • 環境変数「$STARTER_CHAPTER」で、コンパイル対象となる章を指定できます(PDFMakerを書き直したおかげ)。この場合、目次や大扉や奥付は表示されません。 例:STARTER_CHAPTER=foobar rake pdf (foobar.reだけコンパイルする、目次や目次や大扉や奥付はなし)
  • rake pdf && open XXX.pdf」を実行すると、今までは実行のたびに新しいウィンドウが開いていましたが、これが同じウィンドウで開くようになりました(PDFMakerを書き直したおかげ)。これでPDFのプレビューがしやすくなります。
  • rake pdf config=config.yml」のように、rakeタスクでconfigファイル名を指定できるようになりました。これは「review-pdfmaker config.yml」と同じ機能です。
  • 原稿ファイルの改行文字が「\r\n」の場合でも動作するようになりました。
  • 箇条書きの上下のマージンを調整しました。
  • ノート(//note{ ... //})のLaTeXマクロを簡素化しました。
  • 発行日のイベントに技術書典8を追加しました。

2019-10-13

今回の目玉:PDF生成が重い場合の代替として使えるよう、「rake web」を強化しました。

https://twitter.com/_kauplan/status/1183396415944290304

  • rake web」でhtmlページに変換する機能を強化しました。PDF生成と比べて非常に高速なので、原稿執筆中の確認方法として「rake pdf」のかわりに使ってください。またhtmlのデザインもなるべくPDFに似せています。
    サンプル
  • rake web」用に新しいCSSファイル「css/webstyle.css」と「css/normalize.css」を用意しました。今まではepub用のCSSファイルを使ってましたが、専用のCSSファイルを用意したので、デザインをカスタマイズしやすくなります。
  • rake web」用のレイアウトファイル「layouts/layout.html5.erb」を用意しました。ePub用とは別なので、ePubに影響を与えることなくhtmlをカスタマイズできます。
  • rake web」用の設定を config.yml の最後に追加しました。
  • ・ルビを振る「@<ruby>{単語, よみ}」をサポートしました。
  • 傍点をつける「@<bou>{単語}」をサポートしました。 (画像)

2019-08-17

https://twitter.com/_kauplan/status/1162600496806281217

  • 画像をテキストの横(左または右)に表示するコマンド「//sideimage」を用意しました。著者紹介でTwitterアイコンとともに使うといいでしょう。詳細はドキュメントを参照。
    サンプル1
    サンプル2
    サンプル3
  • プログラムコードに枠線をつける機能を用意しました。途中で改ページされるときに少しわかりやすくなります。有効化するにはstarter-config.ymlで「program_border: true」を設定してください。
    サンプル
  • キャプション直後の改ページが減るよう調整しました。またそのためのパラメータ「caption_needspace: 4.8zh」を、config-starter.yamlに用意しました。
    • もしキャプション直後での改ページが発生するなら値を増やす。
    • もし十分なスペースがあるのに改ページされるなら値を減らす。
  • プログラムコードが連続したとき、間のマージンが広くなってしまう問題がありました。今回それを修正し、マージン高が同じになるようにしました。 またノート内でのプログラムコードやターミナルの上下に、少しマージンを入れるよう変更しました。
    サンプル1
    サンプル1
  • 見た目は十分なスペースがあるのに、節や項が改ページされることがあります(画像1)。これはLaTeXが、ページ最下部の段落が最初の1行だけになるのを避けるからです。 この挙動を変更できるようにしました(画像2)。config-starter.ymlの「page_clubline: true」で変更できます。
    サンプル1
    サンプル2
  • フォントサイズを変更するコマンドを用意しました。 また太字ゴシック体にする「@<strong>{}」の、フォントサイズを大きくする派生版を用意しました。
    サンプル
  • プログラムコードやターミナルのフォントサイズを変更するオプションを用意しました。
    サンプル
  • //list[][][fontsize=small] のようにすると、フォントサイズが小さくなります。他に x-small や xx-small が使えます。折返しをしたくない場合に使うといいでしょう。
  • //image」コマンドで「pos=H」を指定したときに、余計な文字がテキストに入り込んでしまうバグを修正しました。

2019-07-31

今回は小規模な改修だけ。

https://twitter.com/_kauplan/status/1156522611238531072

  • 節 (section) ごとに改ページする設定にしてると、たまたま節タイトルがページ先頭から始まる場合も改ページしてしまい、空ページができてしまうことがありました。そこでページ先頭なら改ページしないよう修正しました。
  • 図が現在位置に入りきらず次ページに送られるとき、後続のテキストを現在位置に流し込むかどうかを指定するオプション「image_position:」を config-starter.yml に追加しました。
  • プログラムの長い行が折り返されたとき、右端までいかずに折り返しされ、あと1文字入りそうなときがあります。これはプログラムの表示幅をほんの少しだけ広げると解消できます。そのためのオプションをconfig-starter.ymlに追加しました。
  • キャプションのデザインをわずかに変更し、三角記号の直後にほんの少し空白を追加しました。

2019-07-16

今回の目玉:プログラムとターミナル用の等幅フォントをGUIで選択できる機能。

https://twitter.com/_kauplan/status/1150928548451868672

  • プログラム (//list) とターミナル (//cmd, //terminal) の表示で使う等幅フォントを、プレビューを見ながらGUIで選択できるようになりました。プログラムとターミナルで別々のフォントが選べます。またconfig-starter.ymlでも変更できます。
    サンプル
  • 節(Section)と項(Subsection)がページ先頭から始まるとき、従来では余計なスペースが空いていました。この空きを入れないオプションが用意されました。
    サンプル
    サンプル
  • ドラフトモードを用意しました。ドラフトモードでは画像が読み込まれず四角い枠で表示されます。図やスクリーンショットが多い原稿ではコンパイル時間を大幅に短縮できます。config-starter.ymlで設定するか、環境変数 $STARTER_DRAFT=1 を設定してください。
  • また //image[ファイル名][キャプション][draft=off] のようにすると、特定の画像だけドラフトモードを解除できます。ドラフトモードにしてコンパイル時間を短縮したい、でもこの画像だけは確認したい、という場合に便利。
  • プロジェクト作成画面において、印刷所とイベント(即売会)をGUIで選べるようにしました。イベント名を選ぶと、出版予定日も連動して設定されます。
    サンプル
  • テキストを目立たせない(見せ方を弱くする)ための @<weak>{} というインライン命令を用意しました。引数のテキストをグレーで表示します。
    サンプル1
    サンプル2
  • 節(Section)ごとに改ページする機能を使った場合、章タイトルページを作成すると最初の節のタイトルが消えてしまう不具合を解消しました。(具体的には \clearpage{\clearpage} に修正しました。)
  • 長い行の折り返し記号を、デザインを少し変更して「>」と見分けやすくしました。
  • config-starter.yml で変更できるオプションを増やしました。
  • 不要になったオプションを整理しました。
  • ページ上部のスペースを1mm減らし、本文の高さを1mm増やしました。
  • ページヘッダーと本文との距離を1mm増やしました。
  • 節(Section)や項(Subsection)の上下のスペースを調整しました。

2019-07-09

今回の目玉:印刷用PDFとダウンロード用PDFを切り替えて生成する新機能。

https://twitter.com/_kauplan/status/1148575967918452736

  • 印刷用PDFと電子用(ダウンロード用)PDFとを切り替えて生成する機能を用意しました。環境変数 $STARTER_TARGET が未設定または"pbook"なら印刷用(モノクロ)、"ebook"なら電子用(カラー)が生成されます。
    サンプル
  • 節(Section)ごとに改ページするオプションを用意しました。ただし章(Chapter)の最初の節では改ページしません。
    サンプル1 サンプル2
  • テーブル(//table{ ... //})が正しくレンダリングされないバグを修正(これはStarterのバグ)。
  • 右ページ起こし(奇数ページ始まり)にしない場合でも、第1章が右ページ起こしになってしまうバグに対応(これはLaTeXのバグ)。
  • Starter用の設定ファイル config-starter.yml を追加。このファイルを使うと、プロジェクトのダウンロード後でも章や節や小節のデザインが簡単に変更可能に。
  • これに関連して、章や節や小節のLaTeXマクロの定義を大きく変更。
  • ターミナルのカーソルを表す新しいコマンド @<cursor>{} を追加。詳しくはドキュメントを参照。
  • @<br>{}'\\'+"\n" のように改行文字が入っていたのを入らないように変更。改行が入っていると、@<br>{} を行末に置くと空行ができて段落が分かれてしまうため。
  • sty/starter.styにカラーを表す変数をいくつか追加。カラーの指定がより簡単に。
  • 箇条書きの上下にはいる余白が少し広すぎるので、狭めるよう変更。
  • 名前が「STARTER_」で始まる環境変数を、sty/starter.styやsty/mystyle.styの中から参照可能に。詳しくはドキュメントを参照。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment