Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LATEXBuilder: add option @config["otf"] #608

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

takahashim
Copy link
Collaborator

default is true

cf. #342

@kdmsnr kdmsnr added this to the 2.0.0 milestone Apr 28, 2016
@kdmsnr
Copy link
Collaborator

kdmsnr commented Apr 29, 2016

@takahashim
Copy link
Collaborator Author

まあ今回は見送りでしょうか。
私自身はデフォルトが変わらないのであればあまり困ってないのと、これまで対応しているのはlayout.tex.erbを使ってると思うので。
(ただlayout.tex.erbは細かく非互換が入りやすいので、これで事足れりとはならないのが悩ましいので、TeXのスタイル側で対応できるならそれがベストですが。)

@munepi
Copy link
Contributor

munepi commented Apr 29, 2016

$ dvipdfmx -f [mapfile] で指定する [mapfile] に、少なくとも otf-foo.map, otf-up-foo.map(さらに、ptex-foo.map, uptex-foo.map も)を合わせたマップファイル(例えば foo.map)が指定していると、layout.tex.erb 内で \usepackage[deluxe]{otf} をデフォルトで有効にして問題ないです。
したがって、config.yml に otf オプションをつけるほどでもないように思います。

実際のところ、$ dvipdfmx -f [mapfile] の [mapfile] は、ptex-foo.map, uptex-foo.map, otf-foo.map, otf-up-foo.map のどれかを指定すると思い込まれているユーザさんが多いのかもしれません。

@munepi
Copy link
Contributor

munepi commented Apr 29, 2016

(ただlayout.tex.erbは細かく非互換が入りやすいので、これで事足れりとはならないのが悩ましいので、TeXのスタイル側で対応できるならそれがベストですが。)

#342 でコメントしましたでっち上げ reviewbook.cls
https://gist.github.com/munepi/91703b6f2422862a7e09e56d6d3166d6 内で、

-\@review@pkg@otftrue % \DeclareOption{package:otf}{\@review@pkg@otftrue}
+\DeclareOption{package:otf}{\@review@pkg@otftrue}

と書き換えると、

\documentclass[dvipdfmx, 
  package:otf,
]{reviewbook}

と指定でき、platex, uplatex に依らず、jsbook.cls と otf パッケージ有無を適切に読み込ませられます。
この reviewbook.cls のオプションをちょこっと覚える必要がありますが、latex.tex.erb が少し簡単に書けますね。

@takahashim
Copy link
Collaborator Author

@munepi ええと、もともとのissueであったのは「\usepackage{otf}のオプションを変えたい(deluxeをつけたりとったりできるようにしたい)」ということなので、その辺まで対応できる必要があります。なので、\documentclassのオプションで対応するのは難しいかも。

@takahashim
Copy link
Collaborator Author

まあ、\documentclass[disable-package:otf,...みたいな書き方にして、これがあればotfを読み込まない・なければ読み込む、ということにすればよいのかもしれませんが。

@kdmsnr kdmsnr removed this from the 2.0.0 milestone Apr 29, 2016
@takahashim takahashim added this to the 2.1.0 milestone Apr 29, 2016
@munepi
Copy link
Contributor

munepi commented Apr 29, 2016

@takahashim そもそも otfパッケージのdeluxeオプションを切り替えなくてよいと思うんですね :-) 各仮想フォントに対して、実フォント+CMapなどが適切に指定されておれば、十分ですから。

ただlayout.tex.erbは細かく非互換が入りやすいので、これで事足れりとはならないのが悩ましい

これがあればotfを読み込まない・なければ読み込む、ということにすればよいのかもしれませんが。

ここにいきつきますよね :-)
できるかぎり、以下のようにまとめられたいのかなーと見ております。

  • latex/layout.tex.erb は、書籍情報、書籍文章構造に関わる雛形
  • sty/foo.cls, sty/bar.sty は、紙面体裁に関わる雛形

reviewbook.cls
https://gist.github.com/munepi/91703b6f2422862a7e09e56d6d3166d6 を元に、現状の layout-tex.erb を整理して、jsbook, (u)tbook を被せた review-jsbook, review-tbook などを作ってもよいかとも思っておりました。しかしながら、すでに現状の layout-tex.erb + reviewmacro.sty で使っていらっしゃるユーザさんがいることを想像しますと、(汎用的なjsbook, tbook を使うにもかかわらず、通常でない LaTeX の使い方が混じっていることで) review-jsbook, review-tbook を作ることが混乱を起こしそうですね。
それゆえに、ひとまず、現存の layout-tex.erb でちょっとした enhancement を PR #617 する程度にしようと思います。
また、現存の layout-tex.erb + reviewmacro.sty over jsbook じゃない、別途クラスファイルの contrib を検討しますね!

@takahashim
Copy link
Collaborator Author

そもそも otfパッケージのdeluxeオプションを切り替えなくてよいと思うんですね :-)

なんと、そうなんですか。

@takahashim takahashim modified the milestones: 2.2.0, 2.1.0 Oct 29, 2016
@munepi
Copy link
Contributor

munepi commented Nov 26, 2018

@takahashim さん、

そもそも otfパッケージのdeluxeオプションを切り替えなくてよいと思うんですね :-)

なんと、そうなんですか。

周辺の諸々を踏まえた上で、結果的に1年半以上かかってしまいました…、
少なくとも現状の review-jsbook/review-base.sty では、標準的にotfパッケージの deluxe が有効になっています。


@kmuto さん、
{,review}-jsbook.clsに対して、別途、otfパッケージを読み込んだ場合、otfパッケージの replace オプション(デフォルトで有効←人に依って、これも利便性ゆえの混乱の元かと思ったりしています)により、相対フォント名7書体が使えるようになるものの、従属欧文がComputer Modernに書き換えられてしまうので、(真面目に対応するとなると、)Latin Modernへの変更するための後処理が必要です。
review-base.styでotfパッケージに後に、lmodernパッケージを読んでいるので、部分的にしかLatin Modernフォントになっていないと思われます。

一方、現状の review-jlreq では、 otf パッケージを読んでいないです。
そもそもjlreqは、自前で仮想フォント(細かい差を除くと、相対フォント名で4書体分(明朝、ゴシックで2書体ずつなはず))を持っていますので。
その上で、jlreqクラスファイルに対して、otfパッケージを使う場合、jlreq側の仮想フォントを使わない処理を別途与える必要があります。つまり、otfパッケージのreplaceオプション相当の後処理が必要です。
(jlreq側の仮想フォントとotf側の仮想フォントを別々に扱うこともできて…、(ry )

review-jsbook, review-jlreqクラスファイルを使うにしろ、各要素の書体設定を(otfパッケージを使った相対フォント指定の7書体であったとしても、)自由に与えられるようにするのは、
結局の所、標準のTeX Live環境で一般的なユーザさんにとって、なかなか大変だと思います。

やはり、一番良いのは、クラスファイル側に、フォント周りを組み込んだものだと個人的には思っています。
(なので、現状の jlreq クラスファイルは、自前の仮想フォントを使う範囲でそうなっていますし、後から違うフォント設定をされようが、それは知ったこっちゃないのは、当然です。)
これは設計思想にも依るので、どれが正しいというわけでないです。
ただ、組版する上で、版面設計やフォント周りの設計は、ある種の「環境」だと思うので、パッケージとしてバラバラに使うのではなく、(既成パッケージを使ったとしても、それらのパッケージごとにお作法が異なったりしがちなので、クラスファイル内部で筋が通るようにした上で、)クラスファイル側で提供したほうがよいと考えます。

review-init がネットワーク経由で引っ張ってきやすくなったので、ここらへんのところも気楽にできるかとおもったり思わなかったり。

@kmuto
Copy link
Owner

kmuto commented Nov 26, 2018

とりあえずreview-jsbookのほうについてですが、review-baseのlmodernはreview-jsbook.clsのほうですでにlmodernを取り込んでいるので、有無によって欧文には違いが出ず、和文側のファミリ・シリーズを変えている限りではいずれもLatinModernが使われているようです(つまりとりあえず-baseのlmodernはいらない…)。

和文に関しては
https://review-knowledge-ja.readthedocs.io/ja/latest/latex/uptex-fonts.html
にpxchfonを使う方法を書いてみましたが、クラスファイルで持たせるとvfとかにも手を出さないといけなくないでしょうか。

jlreqのほうは…自分がまだ使い切れていないのですが、こっちは設定含めてまだユーザーに任せるでもいいのだろうか。

@munepi
Copy link
Contributor

munepi commented Nov 26, 2018

いまのRe:VIEW 3リリース直前で、ここまでやるのは、ちょっと骨が折れるので、
jlreqのほうも武藤さんがknowledge spaceに書かれた「pxchfonを使う方法」などで review-custom.sty をカスタムしてもらうので良いかなとも。

たぶん、otfパッケージのdeluxeで提供される \ltseries, \ebseries, \mgfamily のテスト例がないので、引っかかっていないだけだと思います。
下記のコード例が適切かどうかはさておき、Latin ModernにSerifのLightやSansのExtraBoldがないので、それぞれSerif Regular, Sans Boldで代替して従属欧文を当てています。
ひとまず、ここまで面倒みなくても、気になるユーザさんは、自前でやってもらうのがRe:VIEW 3で良さそうな気がしています(時間の都合もここまで面倒みるかどうかも)。
実際には、Computer ModernとLatin Modernで細かい差があるものの、ほとんどの方は気にならないとも思います。
(以下程度コードならば、otfパッケージのupstreamにも反映できそう(反感を食らわない)だとも思うので、そのうち合間に PR してみます。)

\RequirePackage[T1]{fontenc}\RequirePackage{textcomp}%T1/TS1
\RequirePackage{lmodern}
\input t1lmr.fd
\input t1lmss.fd
\DeclareFontShape{T1}{lmr}{l}{n}{<->sub*lmr/m/n}{}
\DeclareFontShape{T1}{lmss}{eb}{n}{<->sub*lmss/bx/n}{}

\RequirePackage[deluxe,jis2004]{otf}
\DeclareRobustCommand\ltseries{\not@math@alphabet\ltseries\relax
  \romanseries\ltdefault\kanjiseries\ltdefault\selectfont}
\DeclareRobustCommand\ebseries{\not@math@alphabet\ebseries\relax
  \romanseries\ebdefault\kanjiseries\ebdefault\selectfont}
\DeclareRobustCommand\mgfamily{\not@math@alphabet\mgfamily\mathmg\relax
  \romanfamily\sfdefault\kanjifamily\mgdefault\selectfont}
\DeclareRobustCommand\textmc[1]{%
    \relax\ifmmode \expandafter\nfss@text \fi{\mcfamily #1}}
\DeclareRobustCommand\textgt[1]{%
    \relax\ifmmode \expandafter\nfss@text \fi{\gtfamily\sffamily #1}}
\DeclareTextFontCommand{\textlt}{\mcfamily\ltseries}%%<- \gtfamilyで\ltseriesの場合を考慮していない。
\DeclareTextFontCommand{\texteb}{\gtfamily\sffamily\ebseries}%%<- \mcfamilyで\ebseriesの場合を考慮していない。
\DeclareRelationFont{\otf@JYn}{hmc}{l}{}{\otf@OTorT1}{lmr}{l}{}
\DeclareRelationFont{\otf@JTn}{hmc}{l}{}{\otf@OTorT1}{lmr}{l}{}
\DeclareRelationFont{\otf@JYn}{hmc}{m}{}{\otf@OTorT1}{lmr}{m}{}
\DeclareRelationFont{\otf@JTn}{hmc}{m}{}{\otf@OTorT1}{lmr}{m}{}
\DeclareRelationFont{\otf@JYn}{hmc}{bx}{}{\otf@OTorT1}{lmr}{bx}{}
\DeclareRelationFont{\otf@JTn}{hmc}{bx}{}{\otf@OTorT1}{lmr}{bx}{}
\DeclareRelationFont{\otf@JYn}{hgt}{m}{}{\otf@OTorT1}{lmss}{m}{}
\DeclareRelationFont{\otf@JTn}{hgt}{m}{}{\otf@OTorT1}{lmss}{m}{}
\DeclareRelationFont{\otf@JYn}{hgt}{bx}{}{\otf@OTorT1}{lmss}{bx}{}
\DeclareRelationFont{\otf@JTn}{hgt}{bx}{}{\otf@OTorT1}{lmss}{bx}{}
\DeclareRelationFont{\otf@JYn}{hgt}{eb}{}{\otf@OTorT1}{lmss}{bx}{}
\DeclareRelationFont{\otf@JTn}{hgt}{eb}{}{\otf@OTorT1}{lmss}{bx}{}
\DeclareRelationFont{\otf@JYn}{mg}{m}{}{\otf@OTorT1}{lmss}{m}{}
\DeclareRelationFont{\otf@JTn}{mg}{m}{}{\otf@OTorT1}{lmss}{m}{}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants