dvips -t landscape -t jisb4

dvips -t landscape -t jisb4

- TAKENO Shigeharu の投稿
返信数: 8
以前、dvips で dvi ファイルを PS に変換する際に、紙のサイズとlandscape の両方を指定する際は、-t landscape -t jisb4 のように 2 度 -t オプションを使うことになっていたと思います。現在もオンラインマニュアルにはそう書いてあります。-t オプションの説明のその部分を引用:

To rotate a document whose size is not letter, you can use the -t option twice, once for the page size, and once for landscape.

しかし、それが実際にやってみるとうまくいきません。

% dvips -t a4 -t landscape hoge.dvi
This is dvips(k) 2021.1 Copyright 2021 Radical Eye Software (www.radicaleye.com)
' TeX output 2022.08.10:2022' -> hoge.ps
dvips: both landscape and papersize specified: ignoring landscape
dvips: warning: -t selected paper may be too small

のように、両方つけるとだめ、と言ってきます。

TeX は texlive-2021 を使用しています (FreeBSD の texlive-20210325)。dvipsk は上に表示されているとおり、2021.1 というバージョンのようです。以前うまくいっていたバージョンは、多分 dvipsk-5.995 というものだと思います。

どなたか何かご存知でしたら教えてください。

なお、当初の目的は、現在の dvipsk ではむしろオプションなしで dvips を実行することで達成できているようです。

TAKENO Shigeharu への返信

Re: dvips -t landscape -t jisb4

- 和田 勇 の投稿
macOS の 2022 2021 ではとりあえず問題ないですね。

これから FreeBSD 環境を構築して検証してみます。結果は明日朝になると思います。

$ which dvips
/usr/local/texlive/2022/bin/universal-darwin/dvips

$ dvips -t a4 -t landscape test2.dvi
This is dvips(k) 2022.1 (TeX Live 2022)  Copyright 2022 Radical Eye Software (www.radicaleye.com)
' TeX output 2022.04.28:1815' -> test2.ps
</usr/local/texlive/2022/texmf-dist/dvips/base/tex.pro>
</usr/local/texlive/2022/texmf-dist/dvips/l3backend/l3backend-dvips.pro>
</usr/local/texlive/2022/texmf-dist/dvips/base/texps.pro>
</usr/local/texlive/2022/texmf-dist/dvips/base/special.pro>.
</usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>

$ export PATH=/usr/local/texlive/2021/bin/universal-darwin:$PATH

$ dvips -t a4 -t landscape /Users/i-wada/Desktop/TeXLive-Forum/2022/2022-04-28/test2.dvi
This is dvips(k) 2021.1 Copyright 2021 Radical Eye Software (www.radicaleye.com)
' TeX output 2022.04.28:1815' -> test2.ps
</usr/local/texlive/2021/texmf-dist/dvips/base/tex.pro>
</usr/local/texlive/2021/texmf-dist/dvips/l3backend/l3backend-dvips.pro>
</usr/local/texlive/2021/texmf-dist/dvips/base/texps.pro>
</usr/local/texlive/2021/texmf-dist/dvips/base/special.pro>.
</usr/local/texlive/2021/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>
和田 勇 への返信

Re: dvips -t landscape -t jisb4

- 和田 勇 の投稿
- 以下の環境で検証してみましたが問題なく動作しました

  - FreeBSD 13.1-RELEASE under qemu: stable 7.0.0 on M1-mac
  - pkg install texlive-full-20210325

- 処理結果

    dvips -t a4 -t landscape hoge.dvi
    This is dvips(k) 2021.1 Copyright 2021 Radical Eye Software (www.radicaleye.com)
    ' TeX output 2022.08.11:0305' -> hoge.ps
    </usr/local/share/texmf-dist/dvips/base/tex.pro>
    以下省略


和田 勇 への返信

Re: dvips -t landscape -t jisb4

- 和田 勇 の投稿
気になったので texdoc dvips やソースをちょっとみてみました。

- texdoc dvips を見ると p.5 に「2.4.3 Output too small or inverted」あり、.dvi ファイルというかソースなどの素材に問題があるように思います。

- プログラムソースは以下のようになっていますね。

    - dvips: both landscape and papersize specified: ignoring landscape

    dospecial.c
    420-  break;
    421-case 'l':
    422-  if (strncmp(p, "landscape", 9)==0) {
    423-      if (hpapersize || vpapersize)
    424-        error(
    425:            "both landscape and papersize specified:  ignoring landscape");
    426-      else
    427-        landscape = 1;
    --
    435-      while (*p == '=' || *p == ' ')
    436-        p++;
    437-      if (lastpsizwins || hpapersize == 0 || vpapersize == 0) {
    438-        if (landscape) {
    439-            error(
    440:            "both landscape and papersize specified:  ignoring landscape");
    441-            landscape = 0;
    442-        }

    - dvips: warning: -t selected paper may be too small

    output.c
    1272-        if (landscape) {
    1273-            if (!indelta(vpapersize - finpapsiz->xsize) ||
    1274-                !indelta(hpapersize - finpapsiz->ysize)) {
    1275-              if (vpapersize > finpapsiz->xsize ||
    1276-                  hpapersize > finpapsiz->ysize)
    1277:                  error("warning: -t selected paper may be too small");
    1278-              else
    1279-                  error("note: -t selected paper may be too large");
    --
    1281-        } else {
    1282-            if (!indelta(hpapersize - finpapsiz->xsize) ||
    1283-                !indelta(vpapersize - finpapsiz->ysize)) {
    1284-              if (hpapersize > finpapsiz->xsize ||
    1285-                  vpapersize > finpapsiz->ysize)
    1286:                  error("warning: -t selected paper may be too small");
    1287-              else
    1288-                  error("note: -t selected paper may be too large");

和田 勇 への返信

Re: dvips -t landscape -t jisb4

- TAKENO Shigeharu の投稿
どうも情報ありがとうございます。元々私が使用していた LaTeX ファイルは、

\documentclass[11pt,b4j,landscape]{jarticle}

のようなもので、元々はタイトルにあるように -t landscape -t jisb4 としてうまくいかなかったものです。-t landscape -t a4 としてもうまくいきませんが、うちの環境では、

\documentclass[11pt,a4j,landscape]{jarticle}

の LaTeX ファイルでも

\documentclass[landscape]{jarticle}

の LaTeX ファイルでも、-t a4 -t landscape でやはり "both landscape ..." がでます。

ソースまで見ていただいてありがとうございます。少し調べてみたら、dospecial.c の方は、5.995 のソースと 2021.1 のソースでは、ちょうど上記 437 行目に違いがあるようです。私もちょっとソースを見てみたいと思います。

どうもありがとうございました。
TAKENO Shigeharu への返信

Re: dvips -t landscape -t jisb4

- はやて (h20y6m) の投稿

dvi ファイルに papersize special が含まれていると出るようです。

dvips のドキュメントにも以下のようにあります。

  • In general, you should not use any ‘-t’ option when using a ‘papersize’ special, which some LaTeX packages (e.g., ‘hyperref’) insert.
はやて (h20y6m) への返信

Re: dvips -t landscape -t jisb4

- 和田 勇 の投稿
landscape したものを landscape ですか ... と悩みつつ
どうやったら件の警告メッセージが表示するようなソースはと
思い倦ねていたのですが ... hyperref ですか

%!platex hoge && dvips -landscaperotate -t a4 -t landscape hoge
% --> WARNING message vvvvvvv
% dvips: both landscape and papersize specified:  ignoring landscape
% dvips: warning: -t selected paper may be too small
%%%%%%%%
\documentclass[landscape]{jarticle}
\usepackage[dvipdfm]{hyperref}
\begin{document}
\href
{https://okumuralab.org/tex/mod/forum/discuss.php?d=3424#p20833}
{dvips -t landscape -t jisb4}
\end{document}
和田 勇 への返信

Re: dvips -t landscape -t jisb4

- TAKENO Shigeharu の投稿
みなさん、色々お調べいただき、ありがとうございます。今手元に LaTeX のソースがなく、調べられるのは 5 日位先になってしまうかもしれません。どうもすみません。

なお、hyperref は使っていませんが、多分、横の1段組みと2段組みが共存できるパッケージを使っていたような気がしますので、それにそういう special が使われていたのかもしれません。

まだかろうじて 5.995 の dvips も手元に残っていたので、それでのテストも行った後でまた報告したいと思います。どうもありがとうございました。
TAKENO Shigeharu への返信

Re: dvips -t landscape -t jisb4

- TAKENO Shigeharu の投稿
問題の件ですが、ようやくわかりましたので報告します。

1. dvipsk-5.995 でも出る。
dvipsk-5.995 でも問題のメッセージは出るようです。よって dvipsk-2021.1 の問題ではありませんでした。失礼しました。

2. 問題の dvi ファイルに papersize special が含まれていた。
はやてさんのご指摘のとおりでした。最小化すると、

\documentclass[11pt,b4j,landscape]{jarticle}
%\usepackage{graphicx}
\begin{document}
ほげ
\end{document}

では問題は起きませんが、graphicx パッケージのコメント記号を外すと、papersize special が入って問題が起きるようです。段組みなどは関係ありませんでした。

3. dvips というよりもむしろコンパイルする LaTeX 側か graphicx 側の問題。
実は、graphicx を使用した、ほぼ同様のソースがあって、2020 年 9 月頃にコンパイルした dvi ファイルがあるのですが、そちらでは問題は起きませんでした。つまり、そちらには papersize special が含まれていません。
よって、以前の FreeBSD の texlive (多分 2015) では同じソースで papersize special が入らず、これが現在の texlive-2021 では入るようになったのではないかと思います。
調べてみると、2016 年に実際にそのような改変が行われていたようです。
cf. https://okumuralab.org/tex/mod/forum/discuss.php?d=1971

その papersize special のおかげでむしろ -t を指定しなくてすむなら、むしろ安心してそのようにしたいと思います。どうも色々ありがとうございました。