jlreq
これは何?
日本語組版処理の要件の実装を試みるLuaTeX-ja / pLaTeX / upLaTeX用のクラスファイルと,それに必要なJFMの組み合わせです.
提供されるもの
クラスファイルjlreq.clsと,横書きLuaTeX-ja用のJFMであるjfm-jlreq.luaが用意されています.また,縦書きのJFMやpLaTeX / upLaTeX 用のJFMを生成するいくつかのスクリプトがあります.
インストール
make
で必要なJFMを生成してください.その後,
- *.tfm -> $TEXMF/fonts/tfm/public/jlreq
- *.vf -> $TEXMF/fonts/vf/public/jlreq
- jfm-jlreq.lua jfm-jlreqv.lua -> $TEXMF/tex/luatex/jlreq
- jlreq.cls -> $TEXMF/tex/latex/jlreq
と配置します.make install
とすると,$TEXMF=$TEXMFHOMEとしてこのコピーを行います.
使い方
通常通り
\documentclass{jlreq}
とします.これで横書きのarticle相当の文書クラスとなります.エンジンは自動判定されますが,指定する場合はクラスオプションにplatex/uplatex/lualatex
のいずれかを渡してください.縦書きにするにはtate
オプションを渡します.また,reportやbook相当の文書クラスとするには,それぞれreport
やbook
オプションを渡します.たとえば,縦書きの本を作成するには
\documentclass[tate,book]{jlreq}
とします.
その他,oneside / twoside / onecolumn / twocolumn / titlepage / notitlepage / draft / final / openright / openany / leqno / fleqn
というよくあるオプションを受け付けます.
標準的な文書クラスと同じように中身を書くことができますが,次のような命令が追加 / 拡張されています.
\jlreqsetup
設定用命令です.プリアンブルでしか使えません.文書に対する設定は,クラスオプションとして行うか\jlreqsetup
を通じて行うかします.どちらで設定するかは設定項目によります.
\section
\section*[running head]{見出し文字列}[副題]
というように,通常の書式に加えて副題を受け付けられるように拡張されています.その他,\part
(articleのみ),\chapter
(book/reportのみ),\subsection
,\subsubsection
も副題を受け付けます.
abstract
環境
プリアンブルにもかけるようになっています.プリアンブルに書かれた場合は,\maketitle
とともに出力されます.二段組の場合は,段組にならず概要を出力することができます.
\sidenote
この命令は傍注の幅が正の時にのみ定義されます.デフォルトの基本版面ではこの幅は0に設定されています.従って\sidenote
は定義されません.後の基本版面の設定を参考にしてください.
\sidenote
は傍注(縦組みの場合は脚注)を出力します.内部では\marginpar
を使っています.デフォルトでは\footnote
と同様の書式となりますが,\jlreqsetup
でsidenote_type=symbol
が指定されている場合,その書式は\sidenote{該当項目}{注}
となります.たとえば
刊行できる\sidenote{原稿}{印刷などの方法により……}を入手する仕事である.
とします.後の説明も参照してください.
\endnote
後注を指定します.\footnote
と同様の書式です.デフォルトでは,注自身の出力は見出し直前に行われます.この動作は\jlreqsetup
にendnote_position
を渡すことで制御できます.詳しくは後の注関係の説明をご覧ください.また\theendnotes
を実行するとその場に出力をします.
\warichu
割注を出力します.行分割位置などは自動で計算されます.(複数回のコンパイルが必要.)\warichu*
ではこれらの位置を手動で指定できます.書式は
\warichu*{(一行目前) & (一行目後)\\ (二行目前) & (二行目後)...}
です.&
が省略されている場合は自動で調整されます.
\tatechuyoko
縦中横を出力します.\tatechuyoko{<文字列>}
とします.縦書きでない場所で使うとエラーになります.
\jafontsize
和文フォントサイズを指定する\fontsize
です.クラスオプションでjafontscale=0.9
とされている場合,\fontsize{9pt}{15pt}
とすると和文フォントのサイズは8.1pt
となりますが,\jafontsize{9pt}{15pt}
とすると9pt
となります.(欧文フォントサイズは10pt
となる.)なお,第二引数は\fontsize
の第二引数と全く同じです.
\
全角空白(U+3000)一文字からなるマクロです.和文間隔を挿入します.LuaLaTeXでは
のみでも和文間隔を入力できます.
その他
- ルビや圏点は提供されません.PXrubricaまたはluatexja-ruby(LuaLaTeX,LuaTeX-jaパッケージに付属)を使うと良いかと思います.
日本語組版処理の要件2.3.2.dによれば,二段組の最後のページの各段の行数は揃えることが望ましいとされていますが,この処理は行われません.
nidanfloat
パッケージを使い,\usepackage[balance]{nidanfloat}
とするとこの処理が行われます.ただし,最終ページでの
\newpage
や\clearpage
が正しく動作しません.詳しくはnidanfloat
パッケージのマニュアルをご覧ください.
各種設計
設計はクラスオプションまたは\jlreqsetup
によりkeyval形式で行います.以下では次の用法を使います.
[A/B]
:AまたはBです.[A/B/C]
等も同様.<寸法>
:TeXが認識する寸法です.簡単な式(10pt+10pt
のような)を使うこともできます.また,クラスオプションでは,場合によっては次のような特殊な値を使うこともできます.(これらはpLaTeX / upLaTeXではもとから利用可能ですが,LuaLaTeXでも利用可能なように処理されています.)\jlreqsetup
内のような場所では,常に\zw
や\zh
により全角幅が記述できます.以下,たとえばQ
が利用可能な場合は<寸法;Q>
のように記述します.Q
:0.25mmと解釈されます.zw
,zh
:全角幅として解釈されます.
基本版面
クラスオプションです.
paper=[<紙サイズ名>/{<寸法>,<寸法>}]
:紙サイズです.紙サイズ名はa0からa10,b0からb10,c2からc8を指定できます.B列はJIS B列です.また,{<横>,<縦>}
と直接寸法を指定することもできます.fontsize=<寸法;Q>
:欧文フォントサイズ.デフォルトは10pt.jafontsize=<寸法;Q>
:和文フォントサイズ.jafontscale=<実数値>
:欧文フォントと和文フォントの比(和文 / 欧文).fontsize
とjafontsize
が両方指定されている場合は無視される.デフォルトは1.line_length=<寸法;zw,zh>
:一行の長さ.デフォルトは字送り方向の紙幅の0.75倍.実際の値は一文字の長さの整数倍になるように補正されます.number_of_lines=<自然数値>
:一ページの行数.デフォルトは行送り方向の紙幅の0.75倍になるような値.gutter=<寸法;zw,zh>
:のどの余白の大きさ.tate
無指定時は奇数ページ左,偶数ページ右の余白tate
指定時は奇数ページ右,偶数ページ左の余白twoside
が指定されていない時は,常に奇数ページ扱いで余白が設定される
head_space=<寸法;zw,zh>
:天の空き量.デフォルトは中央寄せになるような値.foot_space=<寸法;zw,zh>
:地の空き量.デフォルトは中央寄せになるような値.baselineskip=<寸法;Q,zw,zh>
:行送り.デフォルトはjafontsize
の1.7倍.linegap=<寸法;Q,zw,zh>
:行間.headfoot_sidemargin=<寸法;zw,zh>
:柱やノンブルの左右の空き.column_gap=<寸法;zw,zh>
:段間(twocolumn
指定時のみ).sidenote_length=<寸法;zw,zh>
:傍注の幅を指定します.
組み方
クラスオプションです.
open_bracket_pos=[zenkaku_tentsuki/zenkakunibu_nibu/nibu_tentsuki]
:始め括弧が行頭に来た際の配置方法を指定します.それぞれ段落開始全角折り返し行頭天付き(デフォルト),段落開始全角二分折り返し行頭二分,段落開始二分折り返し行頭天付きを意味します.hanging_punctuation
:ぶら下げ組をします.
注関係
\jlreqsetup
で指定します.
reference_mark=[inline/interlinear]
:合印の配置方法を指定します.inline
にすると該当項目の後ろの行中に配置します.interlinear
を指定すると該当項目の上(横組)または右(縦組)に配置します.sidenote_type=[number/symbol]
:傍注と本文との対応の方法を指定します.number
が規定で,注の位置に通し番号が入り,それにより対応が示されます.symbol
とすると,注の位置に特定の記号が入り,また注がついている単語が強調されます.sidenote_symbol=<記号>
:sidenote_symbol=symbol
の時に,注の位置に入る記号.デフォルト*sidenote_keyword_font=<命令>
:sidenote_symbol=symbol
の時に,注のついている単語のフォント指定.デフォルトは無し(強調しない)endnote_position=[headings/paragraph/{_<見出し名1>,_<見出し名2>,...}]
:後注の出力場所を指定します.headings
は各見出しの直前(デフォルト),paragraph
は改段落の際に出力します.また,endnote_position={_chapter,_section}
とすると,\chapter
と\section
の直前に出力します.
キャプション
図表のキャプションを\jlreqsetup
で変更できます.
caption_font=<命令>
:キャプション自身のフォントを指定します.caption_label_font=<命令>
:キャプションのラベルのフォントを指定します.
引用
quote / quotation / verse
環境の挙動を\jlreqsetup
で指定できます.
quote_indent=<寸法>
:字下げを指定します.デフォルトは2zwです.一行の長さが文字サイズの整数倍になるように調整されます.quote_end_indent=<寸法>
:字上げを指定します.デフォルトは0zwです.quote_beforeafter_space=<寸法>
:前後の空きを指定します.quote_beforeafter_space=1\baselineskip
とすると一行あきます.quote_fontsize=[normalsize/small/footnotesize/scriptsize/tiny]
:フォントサイズを指定します.
箇条書き
\jlreqsetup
で指定します.
itemization_beforeafter_space=<寸法>
:箇条書きの前後の空きを指定します.itemization_itemsep=<寸法>
:項目同士の空きを指定します.
定理環境
\jlreqsetup
で指定します.
theorem_beforeafter_space=<寸法>
:定理環境の前後の空きを指定します.
見出し
見出しの設定は,\Declare***Heading
という命令で行います(***には見出しの種類に応じた文字列が入る).書式はすべて
\Declare***Heading{<命令名>}{<レベル>}{<設定>}
となっています.また,\New***Heading
,\Renew***Heading
,\Provide***Heading
も同時に用意されます.それぞれ\newcommand
,\renewcommand
,\providecommand
に対応した動きをします.
扉見出し
\DeclareTobiraHeading
で作成します.通常のクラスファイルにおける\section
等と同じ書式の命令ができます.設定は以下の通り.
type=[han/naka]
:han
だと半扉見出しを,naka
だと中扉見出しを作ります.pagestyle=<ページスタイル>
:見出し箇所のページスタイルを指定します.label_format=<書式>
:ラベルを出力する命令を指定します.たとえばlabel_format={第\thechapter 章}
のように指定します.format=<書式>
:実際に出力する書式を指定します.format={\null\vfil {\Huge\bfseries #1#2}}
のようにします.#1
はラベルに,#2
は見出し文字列に置き換えられます.
別行見出し
\DeclareBlockHeading
で作成します.\<命令名>*[running head]{見出し文字列}[副題]
という書式の命令を作成します.設定は以下の通り.
書式関連
font=<命令>
:見出しのフォントを指定します.subtitle_font=<命令>
:副題のフォントを指定します.label_format=<命令>
:ラベルのフォーマットを指定します.label_format={第\thechapter 章}
などのようにします.subtitle_format=<命令>
:副題のフォーマットを指定します.subtitle_format={「#1」}
のようにします.#1
が副題自身になります.
インデント関連
align=[left/center/right]
:見出し位置の横方向の配置場所を指定します.indent=<寸法>
:見出し全体の字下げ量を指定します.end_indent=<寸法>
:見出し全体の字上げ量を指定します.after_label_space=<寸法>
:ラベル後,見出し文字列までの空きを指定します.second_heading_text_indent=[<寸法>/{<寸法>,<寸法>}]
:見出し文字列の二行目以降のインデントを指定します.一行目の頭を起点として指定しますが,second_heading_text_indent=*1\zw
のように先頭に*
をつけるとラベルの頭を起点としての指定になります.(ラベルがない時は一行目の頭が起点.)また,second_heading_text_indent={<ラベルがある時>,<ラベルがない時>}
という指定をすると,ラベルの有無に応じて値を変更することができます.<ラベルがある時>
の指定ではやはり*
を使うことができます.subtitle_indent=<寸法>
:副題のインデント量を指定します.見出し文字列の一行目を起点として指定します.
その他
subtitle_break=[true/false]
:見出し文字列と副題の間を改行するか指定します.allowbreak_if_evenpage=[true/false]
:見出しが偶数ページにあった場合,その直後の改ページを許可します.pagebreak=[clearpage/cleardoublepage/clearcolumn/nariyuki]
:見出し直前の改ページを指定します.それぞれ,改ページ,改丁,改段,なりゆきです.afterindent=[true/false]
:見出し直後の段落の字下げを行うかを指定します.column_spanning=[true/false]
: 段抜きの見出しにします.pagebreak=clearpageまたはcleardoublepageの時にしか使えません.
行取り
行取りの指定は以下のいずれかの方法で行うことができます.
- 行数を指定し,その中央に配置します.
lines=<自然数値>
により行数を指定します.before_lines=<自然数値>
やafter_lines=<自然数値>
により,さらに前後に追加する行数を指定します.たとえばlines=3,after_lines=1
とすれば,四行の中に配置され,前の空きよりも後ろの空きの方が一行分大きくなります.before_lines
により指定された空きはページ頭には入りませんが,before_lines=*1
というように*
を先頭につけると常に入るようになります. - 行数と,前後いずれかの空きを指定します.
lines=<自然数値>
により行数を,before_space=<寸法>
またはafter_space=<寸法>
のいずれかの指定によりそれぞれ前または後ろの空きを指定します. - 前後の空きを指定します.
before_space=<寸法>
およびafter_space=<寸法>
を指定します.
連続して掲げる見出しの行取り
\SetBlockHeadingSpaces
により,見出しが連続して掲げられたときの行取りを設定することができます.\SetBlockHeadingSpaces
は
\SetBlockHeadingSpaces{
{_part{lines=3,before_lines=1},_section{lines=2},_subsection{lines=2}}
[lines=5]{_section,23pt,_subsection,16pt}
}
のように使います.
- 各々の
{}
内には_<見出し命令名>
か<寸法>
をカンマ区切りで並べます. - 先頭に
[]
で囲まれた設定を追加できます.これは連続して掲げられた見出し全体への設定となります.lines / before_lines / after_lines / before_space / after_space
が利用可能です.各々の意味は上述の行取り指定と同じです. - 寸法はそのまま空き量を表します.
_<見出し命令名>
の後に{}
で囲まれた設定を追加することで,その見出しの空き量を設定します.設定しない場合は前後に空きが入りません.- 見出しに対する
{}
で囲まれた設定内では,lines / before_lines / after_lines / before_space / after_space
が利用可能です.各々の意味は上述の行取り指定と同じです. {}
で囲まれた部分を*
のみにすると(例えば_section{*}
とすると)単独で掲げた場合と同じ設定を使います.
なお,見出しが連続しているかは単純に別行見出しの命令が並んで書かれているかのみで判断します.従ってそれらの命令間に出力には関係しないような命令が挟まっていたとしても,見出しが連続して掲げられているとは判断されません.ただし,見出し命令の間に空白または\label
のみが挟まれている場合は,見出しが連続していると判断されます.
同行見出し
\DeclareRuninHeading
で作成します.通常の文書クラスにおける\section
と同様の,\<命令名>*[running head]{見出し文字列}
という書式の命令が作成されます.設定は以下の通り.
font=<命令>
:見出しのフォントを指定します.indent=<寸法>
見出し文字列全体の字下げ量を指定します.
窓見出し
\DeclareCutinHeading
で作成します.\<命令名>{見出し文字列}
という書式の命令を作成します.設定は以下の通り.
font=<命令>
:見出しのフォントを指定します.indent=<寸法>
:見出し全体の字下げ量を指定します.after_space=<寸法>
:見出しと本文との間の空きを指定します.onelinemax=<寸法>
,twolinemax=<寸法>
:見出し文字列の長さがonelinemax
以下ならば一行で,twolinemax
以下ならば二行で窓見出しを出力します.それ以上の場合は三行です.デフォルトはそれぞれ6文字,20文字の長さ.
\ModifyHeading
既に(上のどれかを使い)定義された見出し命令の設定を変更します.たとえば
\ModifyHeading{section}{lines=10}
とすると,\section
のフォントなどの設定はそのままに,行取りのみが10行に変更されます.見出しの種類を変更することはできません.
\SaveHeading
見出し命令の定義を待避します.
\SaveHeading{section}{\restoresection} % \sectionの中身を\restoresectionに待避.
\RenewBlockHeading{section}{1}{font=……} % \sectionを新しく定義する.
……
\restoresection % \sectionの中身を元に戻す.
のように使います.
ページスタイル
\DeclarePageStyle{<ページスタイル名>}{<設定>}
によりページスタイルを定義することができます.<設定>
はkeyval形式です.定義したページスタイルは\pagestyle
で適用できます.設定は以下の通り.
yoko
:横書きで上下に出力します.デフォルト.tate
:縦書きで小口側に出力します.font=<命令>
:柱とノンブルのフォントを指定します.running_head_position
,nombre_position
:柱とノンブルの位置を指定します.yoko
かtate
のどちらが指定されているかで挙動が変わります.yoko
指定時:top-left
のように指定できます.top/bottom/center/left/right/gutter/fore_edge
が使えます.gutter
はのど,fore_edge
は小口です.left
,right
の指定は奇数ページに対するものです.twoside
が指定されている場合,偶数ページはその逆になります.tate
指定時:<寸法>
が指定できます.running_head_position
は柱の天からの下げ量を,nombre_position
はノンブルの地からの上げ量を指定します.
nombre=<書式>
:出力するノンブルを指定します.デフォルトは\thepage
.odd_running_head=<書式>
,even_running_head=<書式>
:それぞれ奇数ページ,偶数ページの柱を指定します._section
のように_
から始まる名前を指定すると,対応する見出しを出力します.(_section
だと現在の\section
を出力する.)
\NewPageStyle
,\RenewPageStyle
,\ProvidePageStyle
もあります.\ModifyPageStyle
により既存のページスタイルを改変することが可能です.
その他
- クラスオプション
jlreq_notes
が渡されると,日本語組版処理の記述と矛盾する設定が行われた場合に通知がされます.
ライセンス
このパッケージは二条項BSDライセンスの元で配布されています.詳しくはLICENSEをご覧ください.
履歴
- 2017-02-08
- 最初のバージョン.
- 2017-02-17
- いくつかバグを修正.
- クラスオプション/
\jlreqsetup
にいくつかのキーを追加/変更. abstract
環境を実装.- パッケージを読み込んでいるだけのはやめた.
- 2017-03-14
- いくつかバグを修正.
- 和文ファミリを欧文ファミリに従属させるようにした.
\DeclareBlockHeading
にオプションをたくさん追加.- quote環境などを調整するオプションを追加.
- 2017-03-20
- バグ修正.
\footnote / \sidenote / \endnote
の周りに必要ならば空白を挿入するようにした.
- 2017-04-04
- バグ修正.
\DeclarePageStyle
にtate
とfont
オプションを追加.
- 2017-04-29
- バグ修正
jafontsize
とjafontscale
をクラスオプションに,また\jafontsize
を追加.\tatechuyoko
を追加.- クラスオプション
jlreq_warnings
をjlreq_notes
に変更. - いくつかのクラスオプションを
\jlreqsetup
に移動. - いくつかのオプションを
\jlreqsetup
に追加. - クラスオプションの
paper={<縦>,<横>}
をpaper={<横>,<縦>}
に変更.
- 2017-06-11
plext
/lltjext
の読み込みを中止.\DeclareBlockHeading
にalign
を追加.indent=center
やend_indent=center
を廃止.- 一部の
\kcatcode
(upLaTeX時) を変更.
- 2017-08-13
column_spanning
を\DeclareBlockHeading
に追加.- ページレイアウトにおける「本文の長さ」に傍注の長さを入れるようにした.
- 傍注の長さのデフォルトを0とした.
- 傍注の長さが0の時には
\sidenote
を定義しないようにした. - 和文間隔を挿入する命令を追加.
- 2017-08-29
- 縦書きでも著者名が横書きで出てしまうバグを修正.
- 2017-11-23
- バグ修正
\SetBlockHeadingSpaces
を追加.\contentsname
と\indexname
に入っていたスペースを削除.
Noriyuki Abe
https://github.com/abenori/jlreq