jlreq

これは何?

日本語組版処理の要件の実装を試みるLuaTeX-ja / pLaTeX / upLaTeX用のクラスファイルと,それに必要なJFMの組み合わせです.

提供されるもの

クラスファイルjlreq.clsと,横書きLuaTeX-ja用のJFMであるjfm-jlreq.luaが用意されています.また,縦書きのJFMやpLaTeX / upLaTeX用のJFMを生成するいくつかのスクリプトがあります.

インストール

makeで必要なJFMを生成してください.その後,

と配置します.make installとすると,$TEXMF=$TEXMFHOMEとしてこのコピーを行います.

動作環境

pLaTeX / upLaTeX / LuaLaTeX上で動きます.以下のパッケージを内部で読み込みます.

リリース時点での最新版での動作を確認しています.

使い方

通常通り

\documentclass{jlreq}

とします.これで横書きのarticle相当の文書クラスとなります.エンジンは自動判定されますが,指定する場合はクラスオプションにplatex/uplatex/lualatexのいずれかを渡してください.縦書きにするにはtateオプションを渡します.また,reportやbook相当の文書クラスとするには,それぞれreportbookオプションを渡します.たとえば,縦書きの本を作成するには

\documentclass[tate,book]{jlreq}

とします.

その他,oneside / twoside / onecolumn / twocolumn / titlepage / notitlepage / draft / final / landscape / openright / openany / leqno / fleqnというよくあるオプションを受け付けます.またdisablejfamオプションを渡すと,和文フォントを数式用に登録しません.

標準的な文書クラスと同じように中身を書くことができますが,次のような命令が追加 / 拡張されています.なお,本ドキュメントでは日本語組版処理の要件における用語を断りなく使います.

\jlreqsetup

設定用命令です.プリアンブルでしか使えません.文書に対する設定は,クラスオプションとして行うか\jlreqsetupを通じて行うかします.どちらで設定するかは設定項目によります.

\section

\section*[running head]{見出し文字列}[副題]というように,通常の書式に加えて副題を受け付けられるように拡張されています.その他,\part(articleのみ),\chapter(book/reportのみ),\subsection\subsubsectionも副題を受け付けます.

abstract環境

プリアンブルにもかけるようになっています.プリアンブルに書かれた場合は,\maketitleとともに出力されます.二段組の場合は,段組にならず概要を出力することができます.

\sidenote

この命令は傍注の幅が正の時にのみ定義されます.デフォルトの基本版面ではこの幅は0に設定されています.従って\sidenoteは定義されません.後の基本版面の設定を参考にしてください.

\sidenoteは傍注(縦組みの場合は脚注)を出力します.内部では\marginparを使っています.デフォルトでは\footnoteと同様の書式となりますが,\jlreqsetupsidenote_type=symbolが指定されている場合,その書式は\sidenote{該当項目}{注}となります.たとえば

刊行できる\sidenote{原稿}{印刷などの方法により……}を入手する仕事である.

とします.後の説明も参照してください.

\endnote

後注を指定します.\footnoteと同様の書式です.デフォルトでは,注自身の出力は見出し直前に行われます.この動作は\jlreqsetupendnote_positionを渡すことで制御できます.詳しくは後の注関係の説明をご覧ください.また\theendnotesを実行するとその場に出力をします.

\warichu

割注を出力します.行分割位置などは自動で計算されます.(複数回のコンパイルが必要.)\warichu*ではこれらの位置を手動で指定できます.書式は

\warichu*{(一行目前) & (一行目後)\\ (二行目前) & (二行目後)...}

です.&が省略されている場合は自動で調整されます.

\tatechuyoko

縦中横を出力します.\tatechuyoko{<中身>}とします.\tatechuyokoは縦書きでない場所で使うとエラーになりますが,\tatechuyoko*は縦書きでない場所ではそのまま出力されます.

\jidori

\jidori{<寸法>}{<中身>}により,中身を寸法の長さに字取りしたものを出力することができます.

\akigumi

\akigumi{<寸法>}{<中身>}により,中身の文字間を寸法の長さとして空き組した結果を出力することができます.ただしLuaLaTeX利用時以外は正しい出力結果とはなりません.

\jafontsize

和文フォントサイズを指定する\fontsizeです.クラスオプションでjafontscale=0.9とされている場合,\fontsize{9pt}{15pt}とすると和文フォントのサイズは8.1ptとなりますが,\jafontsize{9pt}{15pt}とすると9ptとなります.(欧文フォントサイズは10ptとなる.)なお,第二引数は\fontsizeの第二引数と全く同じです.

\ 

全角空白(U+3000)一文字からなるマクロです.和字間隔を挿入します.LuaLaTeXでは のみでも和字間隔を入力できます.

その他

各種設計

設計はクラスオプションまたは\jlreqsetupによりkeyval形式で行います.ただし,クラスオプションではLaTeXの実装により,本来可能な入力が受け付けられないケースがあります.多くの場合は空白を除くことにより解決します.

以下では次の用法を使います.

基本版面

クラスオプションです.

組み方

クラスオプションです.

逆ノンブル

クラスオプションです.

注関係

\jlreqsetupで指定します.

キャプション

図表のキャプションを\jlreqsetupで変更できます.全ての設定で,各環境ごとの設定をすることができます.例えばcaption_font=\normalsize,table=\Largeとすると,table環境内では\Largeが適用され,そのほかの環境内では\normalsizeが適用されます.他の設定も同様です.

引用

quote / quotation / verse環境の挙動を\jlreqsetupで指定できます.

箇条書き

\jlreqsetupで指定します.

定理環境

\jlreqsetupで指定します.

amsthmパッケージが読み込まれると,新しい定理スタイルjlreqが定義され,現在のスタイルがjlreqへと変更されます.このとき,上記設定はこのjlreqスタイルへの設定として機能します.

前付きなど

\frontmatter / \mainmatter / \backmatter / \appendixでの処理を\jlreqsetupで指定できます.

frontmattermainmatterbackmatterappendixへと変えた設定も存在します.ただし,以下のような違いがあります.

見出し

新しい見出しを\New***Headingという命令で作ることができます(***には見出しの種類に応じた文字列が入る).書式はすべて

\New***Heading{<命令名>}{<レベル>}{<設定>}

となっています.また,\Renew***Heading\Provide***Heading\Declare***Headingも同時に用意されます.それぞれ

となっています.

扉見出し

\NewTobiraHeadingで作成します.通常のクラスファイルにおける\section等と同じ書式の命令ができます.設定は以下の通り.

別行見出し

\NewBlockHeadingで作成します.\<命令名>*[running head]{見出し文字列}[副題]という書式の命令を作成します.設定は以下の通り.

書式関連

インデント関連

その他

行取り

行取りの指定は以下のいずれかの方法で行うことができます.

連続して掲げる見出しの行取り

\SetBlockHeadingSpacesにより,見出しが連続して掲げられたときの行取りを設定することができます.\SetBlockHeadingSpaces

\SetBlockHeadingSpaces{
  {_part{lines=3,before_lines=1},_section{lines=2},_subsection{lines=2}}
  [lines=5]{_section,23pt,_subsection,16pt}
}

のように使います.この意味は次の通りです.

個々の設定は以下のようになります.

なお,見出しが連続しているかは単純に別行見出しの命令が並んで書かれているかのみで判断します.従ってそれらの命令間に出力には関係しないような命令が挟まっていたとしても,見出しが連続して掲げられているとは判断されません.ただし,見出し命令の間に空白,改行または\label[<オプション>]{<引数>}…{<引数>}という形のもののみが挟まれている場合は,見出しが連続していると判断されます.

同行見出し

\NewRuninHeadingで作成します.通常の文書クラスにおける\sectionと同様の,\<命令名>*[running head]{見出し文字列}という書式の命令が作成されます.設定は以下の通り.

窓見出し

\NewCutinHeadingで作成します.\<命令名>{見出し文字列}という書式の命令を作成します.設定は以下の通り.

\ModifyHeading

既に(上のどれかを使い)定義された見出し命令の設定を変更します.たとえば

\ModifyHeading{section}{lines=10}

とすると,\sectionのフォントなどの設定はそのままに,行取りのみが10行に変更されます.見出しの種類を変更することはできません.

\SaveHeading

見出し命令の定義を待避します.

\SaveHeading{section}{\restoresection} % \sectionの中身を\restoresectionに待避.
\RenewBlockHeading{section}{1}{font=……} % \sectionを新しく定義する.
……
\restoresection % \sectionの中身を元に戻す.

のように使います.

ページスタイル

\NewPageStyle{<ページスタイル名>}{<設定>}

によりページスタイルを定義することができます.<設定>はkeyval形式です.定義したページスタイルは\pagestyleで適用できます.設定は以下の通り.

\RenewPageStyle\ProvidePageStyle\DeclarePageStyleもあります.\ModifyPageStyleにより既存のページスタイルを改変することが可能です.

JFM

以下のような独自のJFMを使います.パッケージによっては,パッケージ独自のJFMや,また標準のJFMを使うように設定がし直される場合があります.本クラスファイルで使用するJFMを使う場合には,パッケージオプションなどを適切に与えて設定をする必要があります.

pLaTeX/upLaTeXの場合

JFMの名前は次の通りです.[]で囲まれている文字は設定により入ったり入らなかったりします.

[u][b][z]jlreq[g][-v]

それぞれの文字は以下の場合に入ります.

例えば,ぶら下げ組みを利用せず,クラスオプションにopen_bracket_pos=zenkakunibu_nibuが指定されいてるソースをpLaTeXで処理した場合,横書き明朝体にはzjlreqという名前のJFMが使われます.

LuaLaTeXの場合

となります.ゴシックも同じJFMを使います.本クラスファイルは,LuaTeX-ja標準のJFMをこれらに変更します.

その他

ライセンス

このパッケージは二条項BSDライセンスの元で配布されています.詳しくはLICENSEをご覧ください.

履歴


Noriyuki Abe https://github.com/abenori/jlreq