texjporg / jsclasses

Classes tailored for use with Japanese.
BSD 2-Clause "Simplified" License
60 stars 14 forks source link

pdfpages で \includepdf[fitpaper]{...} を実行するとエラー #50

Closed kmaed closed 7 years ago

kmaed commented 7 years ago

aaa.pdf を pdfpages で取り込もうと

\documentclass[dvipdfmx]{jsarticle}
%% \newlength{\trimtop}
%% \newlength{\trimedge}
\usepackage{pdfpages}
\begin{document}
\includepdf[fitpaper]{aaa}
\end{document}

を試すと

! Undefined control sequence.
<argument> \trimtop

とエラーになります.原因は pdfpages が fitpaper オプション時に \stockwidth が定義されていれば memoir クラスだと判定して \trimtop なども設定しようとするのですが,jsclasses では \trimtop が定義されていないためのようです (cf.: #4).

aminophen commented 7 years ago

すみません、pdfpages 未考慮のまま \stockwidth と \stockheight を足したのは私ですし、少なくとも「トンボ無しの場合は \stockwidth/stockheight が不要なはずなのでそもそも定義しない」とすべきでした。

\trimtop と \trimedge を定義すればエラーは消えるのでしょうけど、その場合 tombo オプションで発行される papersize special との兼ね合いが面倒ですね。

aminophen commented 7 years ago

トンボ無しの場合は \stockwidth/stockheight が不要なはずなのでそもそも定義しない

diff --git a/jsclasses.dtx b/jsclasses.dtx
index b6cfd11..c664494 100644
--- a/jsclasses.dtx
+++ b/jsclasses.dtx
@@ -700,16 +700,23 @@
 % [2016-07-11] memoirクラスのマニュアルによると,トンボを含めた用紙の寸法は
 % |\stockwidth|,|\stockheight|と呼ぶようですので,これを使うことにしました。
 %
+% [2017-01-11] トンボオプションが指定されているとき「だけ」|\stockwidth|,
+% |\stockheight|を定義するようにしました。
+%
 %    \begin{macrocode}
-\newdimen\stockwidth \newdimen\stockheight
-\setlength{\stockwidth}{\paperwidth}
-\setlength{\stockheight}{\paperheight}
 \iftombow
+  \newdimen\stockwidth \newdimen\stockheight
+  \setlength{\stockwidth}{\paperwidth}
+  \setlength{\stockheight}{\paperheight}
   \advance \stockwidth 2in
   \advance \stockheight 2in
 \fi
 \ifpapersize
-  \AtBeginDvi{\special{papersize=\the\stockwidth,\the\stockheight}}
+  \iftombow
+    \AtBeginDvi{\special{papersize=\the\stockwidth,\the\stockheight}}
+  \else
+    \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
+  \fi
 \fi
 %    \end{macrocode}
 %
@@ -944,11 +951,16 @@
 % [2016-07-11] 新しく追加した|\stockwidth|,|\stockheight|も|\mag|にあわせて
 % スケールします。
 %
+% [2017-01-11] トンボオプションが指定されているとき「だけ」|\stockwidth|,
+% |\stockheight|が定義されています。
+%
 %    \begin{macrocode}
 \setlength\paperwidth{\inv@mag\paperwidth}%
 \setlength\paperheight{\inv@mag\paperheight}%
-\setlength\stockwidth{\inv@mag\stockwidth}%
-\setlength\stockheight{\inv@mag\stockheight}%
+\iftombow
+  \setlength\stockwidth{\inv@mag\stockwidth}%
+  \setlength\stockheight{\inv@mag\stockheight}%
+\fi
 %    \end{macrocode}
 %
 % \paragraph{pagesizeスペシャルの出力}

のちほどこれは commit しておきます。これで「トンボ系オプションがない場合」は pdfpages と互換になるのではないかと思います。

一方 \trimedge\trimtop はどうしたものでしょう。memoir 以外に \stockwidth \stockheight を定義しているクラスを探して、それらすべてで \trimedge \trimtop が定義されているようなら、jsclasses にも追加で定義したほうが無難でしょうか。

kmaed commented 7 years ago

ありがとうございます.

memoir 以外に \stockwidth \stockheight を定義しているクラスを探して、それらすべてで \trimedge \trimtop が定義されているようなら、jsclasses にも追加で定義したほうが無難でしょうか。

% rg stockwidth -g '*.cls' -g '!jsclasses' -g '!luatexja' -g '!bxjscls' -l
texmf-dist/tex/latex/tui/tui.cls
texmf-dist/tex/latex/h2020proposal/h2020proposal.cls
texmf-dist/tex/latex/tudscr/tudscrbook.cls
texmf-dist/tex/latex/tudscr/tudscrreprt.cls
texmf-dist/tex/latex/tudscr/tudscrartcl.cls
texmf-dist/tex/latex/tudscr/tudscrposter.cls
texmf-dist/tex/latex/memoir/memoir.cls
texmf-dist/tex/latex/kotex-oblivoir/oblivoir-xlua.cls
texmf-dist/tex/latex/kotex-oblivoir/oblivoir-base.cls

見てみましたが,tui.cls, h2020proposal.cls, oblivoir-{xlua,base}.cls は memoir.cls を読み込み,tudscr は crop.sty 読み込み時の処理が書いてありました.

これで気付いたのですが,

\documentclass{article}
\usepackage{crop}
\usepackage{pdfpages}
\begin{document}
\includepdf[fitpaper]{aaa}
\end{document}

でも同じ問題が起きるのですね.こうなると,pdfpages に報告したほうがいいのかな?

aminophen commented 7 years ago

\usepackage{crop}

見つけていただきありがとうございます。pdfpages に依頼していただけると助かります。pdfpages 側で対処していただけるなら、jsclasses は \trimtop/\trimedge を定義しないままで済みます。

なお luatexja のほうでは ltjsclasses と ltjclasses の両方に stockwidth/stockheight があるので、同じ問題が起きているかもしれません。

kmaed commented 7 years ago

pdfpages に依頼していただけると助かります。

あとでメールを書きます.

aminophen commented 7 years ago

\stockwidth/\stockheight の修正をリリースします。

kmaed commented 7 years ago

現状を報告しておきますと,pdfpages の作者の Andreas Matthias さんには連絡がつきまして,既に修正していただきました.最新版ではこの問題は起こらなくなっています.最新の pdfpages のリリースは週末を予定しているとのことです.

aminophen commented 7 years ago

最新版ではこの問題は起こらなくなっています.

安心ですね。ご連絡ありがとうございました。

aminophen commented 7 years ago

pdfpages もアップデートされたので完了とします。