pLaTeX / upLaTeX最新版(2016/07/01)+ jsclasses + 特定のパッケージでのページサイズ設定の不具合

pLaTeX / upLaTeX最新版(2016/07/01)+ jsclasses + 特定のパッケージでのページサイズ設定の不具合

- 松浦 高志 の投稿
返信数: 10
次の条件でdvipdfmxを用いてPDFに変換したとき,ページサイズが正しく設定されません.

1, TeX Live 2016の最新版のpLaTeX / upLaTeX(2016/07/01版)を用いる.
2, jsarticle.clsを用い,文字サイズを10pt以外に設定する.
3, 特定のパッケージ(graphicxパッケージやteubnerパッケージなど)を用いる.

たとえば

\documentclass[12pt]{jsarticle}
\usepackage{graphicx}

\title{dvipdfmxのテスト}
\author{テスト}

\begin{document}
\maketitle

テスト.

\end{document}

ではページサイズが17.5 x 24.75cmに設定されてしまいます.jsarticle.clsのオプションにa4paper,papersizeを加えても同じですし,さらにdvipdfmxオプションを加えても同じです.dvipdfmxの引数に -p a4 を加えても同じです.

teubnerパッケージの例は以下の通りです.

\documentclass[12pt,uplatex]{jsarticle}
\kcatcode`α=15
\kcatcode`ἀ=15
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[greek,english]{babel}
\languageattribute{greek}{polutoniko}
\usepackage{teubner}

\title{古典ギリシア語}
\author{テスト}

\begin{document}

\maketitle

テスト.\selectlanguage{greek}ἀγαθός

\end{document}

2016年6月中旬頃のpLaTeX / upLaTeXの更新でも同様の現象が出ていたのですが,jsarticleのオプションにdvipdfmxを加えることで正しくページが設定されていました.
松浦 高志 への返信

Re: pLaTeX / upLaTeX最新版(2016/07/01)+ jsclasses + 特定のパッケージでのページサイズ設定の不具合

- aminophen の投稿
時間が無くて調べきれていないのですが、graphicx のほうは一応現象としては把握していました。
(一方、私は teubner は初耳でした。)

graphics/color に関しては、forum:1956 に関連した現象です。

> 2016年6月中旬頃のpLaTeX / upLaTeXの更新でも
> 同様の現象が出ていたのですが,jsarticleのオプションに
> dvipdfmxを加えることで正しくページが設定されていました.

これは、pLaTeX / upLaTeX が悪いわけではなく(何も変えていません!)、本家 LaTeX チームが
・まず 2016/06/17 に dvips.def 等へ
・次いで 2016/07/02 に dvipdfmx.def 等へ
と順次 papersize special を入れるコードを追加してきたことが背景にあります。

jsclasses の「版面拡大 (\mag) して papersize special を発行」と、今回の
LaTeX 本家の graphics/color ドライバが非互換になっているのだろうと思いますが…

teubner のほうはまだ見ていません。
aminophen への返信

Re: pLaTeX / upLaTeX最新版(2016/07/01)+ jsclasses + 特定のパッケージでのページサイズ設定の不具合

- aminophen の投稿
> teubner のほうはまだ見ていません。

いま見てみました。結局、内部で graphicx を呼んでいるだけでした。
つまり根は全部同じ(dvips.def や dvipdfmx.def の変更が原因)ということです。
aminophen への返信

Re: pLaTeX / upLaTeX最新版(2016/07/01)+ jsclasses + 特定のパッケージでのページサイズ設定の不具合

- Z. R. の投稿

根本的な原因は、「hyperref の setpagesize オプションが mag 適用時に誤動作する」のと同じです。

つまり、papersize special 命令は(歴史的な経緯により)「単位が常に true 付とみなされる」という”癖”があります。従って、「mag が適用されている可能性がある」状況では

special{papersize=\the\paperwidth,\the\paperheight}

というコードは不適切というわけです。

Z. R. への返信

Re: pLaTeX / upLaTeX最新版(2016/07/01)+ jsclasses + 特定のパッケージでのページサイズ設定の不具合

- Z. R. の投稿

(念のため。これは dvips.def/dvipdfmx.def 側の問題です。)

dvipdfmx については、「papersize special の代わりに pdf:pagesize special を用いる」という手段があります。

\special{pdf:pagesize width \the\paperwidth\space height \the\paperheight}

しかしこれは dvips では使えません。dvips については、「実際の \mag を基にして補正する計算を行う」しかないように思えます。

Z. R. への返信

Re: pLaTeX / upLaTeX最新版(2016/07/01)+ jsclasses + 特定のパッケージでのページサイズ設定の不具合

- aminophen の投稿
dvipdfmx.def v4.10 の

\special{papersize=\the\paperwidth,\the\paperheight}%

なる行を

\special{pdf:pagesize width \the\paperwidth\space height \the\paperheight}%

に置き換えてみると、たしかに dvipdfmx では ok になります。
ただし、jsclasses の papersize option はトンボの分の補正も
サポートしていますが、dvipdfmx.def に上記の変更を加えても
トンボは正しくサポートできていません。

(勝手に変えてみたものをここ (GitHub:aminophen/graphics-def) に置いています)

トンボ (tombo/tombow) 分の補正が効かなくなるという点では、LuaTeX-ja の
ltjsclasses も(\mag を使っていないとはいえ)同じ現象が発生します。

\documentclass[tombow]{ltjsarticle}
%\usepackage{graphicx}
\begin{document}
あいうえお
\end{document}

graphicx を有効にすると、用紙サイズのトンボ分の補正が効かなくなります。
(このケースも graphicx に nosetpagesize オプションを付けると ok です)
aminophen への返信

Re: pLaTeX / upLaTeX最新版(2016/07/01)+ jsclasses + 特定のパッケージでのページサイズ設定の不具合

- 松浦 高志 の投稿
アセトアミノフェンさん,ありがとうございます.

teubnerパッケージが\RequirePackage{graphicx}していることを調べ忘れていました.おそらくgraphicxパッケージへの対応でteubnerパッケージもOKになるものと思います.(すみません,投稿が被ったようです.)

dvips.defやdvipdfmx.defなどの更新についても解説をしていただき,ありがとうございます.
松浦 高志 への返信

Re: pLaTeX / upLaTeX最新版(2016/07/01)+ jsclasses + 特定のパッケージでのページサイズ設定の不具合

- 松浦 高志 の投稿
どうやら

\usepackage[nosetpagesize]{graphicx}

とするとよいようです.dvipdfmx.defの最後の方に書かれていました.解説していただき,ありがとうございました.
松浦 高志 への返信

Re: pLaTeX / upLaTeX最新版(2016/07/01)+ jsclasses + 特定のパッケージでのページサイズ設定の不具合

- aminophen の投稿
そうです、nosetpagesize というオプションがあります。
ただちょっと既存のソースのままではダメになってしまうから不便ではありますね。
特に teubner なんて graphicx を内部で読み込んでいるとは解りにくいし…

(pLaTeX ではなく)jsclasses の Issue なので、そっちでなんとかしてもらえるとよいですね…
と思ったのですが、jsclasses も GitHub にあるので我々がなんとかしないといけないのだろうか?
https://github.com/texjporg/jsclasses

(とりあえず Issue #2 だけ立てました)
aminophen への返信

Re: pLaTeX / upLaTeX最新版(2016/07/01)+ jsclasses + 特定のパッケージでのページサイズ設定の不具合

- aminophen の投稿
今日付けで graphics-def(dvips.def / dvipdfmx.def /など)のすべてで
「\mag が 1000 でない場合は、ページサイズ設定を発行しない」
となりました。(仮に [setpagesize] オプションが有効でも、これを無視して [nosetpagesize] 相当に扱う。)
よって、10pt 以外の jsclasses(\mag 使用)では [papersize] オプションが効力を持ちます。
明日以降、tlmgr でアップデートに反映されると思います。

一方、jsclasses の 10pt かつ tombo オプション使用時は、本来「用紙サイズ + 2 truein」にならなければ
いけないのですが、この場合は \mag=1000 なので graphics-def によるページサイズ設定が行われます。
これは jsclasses の [papersize] オプションより強い効力を持ってしまうため、このことへの対応を含めて
現在 GitHub にある開発版のほうで改修を行っています。
https://github.com/texjporg/jsclasses

jsclasses の開発版も(コミュニティ版 pLaTeX 同様に)Watch おねがいします。
aminophen への返信

Re: pLaTeX / upLaTeX最新版(2016/07/01)+ jsclasses + 特定のパッケージでのページサイズ設定の不具合

- 松浦 高志 の投稿
アセトアミノフェンさん,お知らせありがとうございました.

最新のアップデートでjsclassesで10pt以外を使った場合でpapersizeオプションが有効になったことを確認しました.