summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/platex-tools/bounddvi.tex
blob: 63afed712d41bb5b41079d574a75f4f729dc9cab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
%# -*- coding: utf-8 -*-
\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
  \epTeXinputencoding utf8    % ensure utf-8 encoding for platex
\fi

% パッケージ作者 (v1.0--v6.0):東京都市大学(旧称・武蔵工業大学)井上浩一
% 修正版 (v7.0--) および本ドキュメント:山下弘展 (Hironobu Yamashita)

\documentclass[a4paper]{jsarticle}
\usepackage{doc}
\usepackage{bounddvi}
\GetFileInfo{bounddvi.sty}
\title{Package \textsf{bounddvi} \fileversion}
\author{Koichi Inoue \& Hironobu Yamashita}
\date{\filedate}
\begin{document}

\maketitle

DVIファイルは用紙サイズ情報を含みませんが、PostScriptやPDFといった
用紙サイズを規定するフォーマットへ変換するプログラム(\texttt{dvips}や
\texttt{dvipdfmx})は、\verb+\special+命令によってDVIファイルに埋め込ま
れた用紙サイズ情報を解釈します。
% たとえば、幅100mm、高さ200mmの用紙に出力したい場合は
%\begin{verbatim}
%  \special{papersize=100mm,200mm}
%\end{verbatim}
% のように指定してやることができます。

\textsf{bounddvi}パッケージは、クラスファイルなどが想定している用紙
サイズ情報(\verb+\paperwidth+, \verb+\paperheight+)をDVIファイルに
\verb+\special+命令として埋め込むことで、\texttt{dvips}や
\texttt{dvipdfmx}の出力用紙サイズを指定する機能を提供します。
\begin{verbatim}
  \documentclass[a4j]{jarticle}
  \usepackage{bounddvi}
  \begin{document}
  …本文…
  \end{document}
\end{verbatim}
のように使います。p\LaTeX における横組と縦組の両方で使え、また
版面拡大(\verb+\mag+)が使われた場合にも対応しています(詳細は付録
を参照してください)。また、v7.0以降、p\LaTeX カーネルのトンボ
オプションを使用した場合にも対応しており、p\LaTeX が仮定している
「トンボのノビ(2in)を含めたサイズ」に設定します。

本パッケージはv7.0以降、\textsf{platex-tools}バンドルの一部として
配布されています:
\begin{verbatim}
  https://github.com/aminophen/platex-tools
\end{verbatim}

\section*{他のパッケージとの互換性}

用紙サイズ設定機能だけを提供する\textsf{bounddvi}パッケージのほかにも、
パッケージの機能の一部として用紙サイズ設定を行うものがいくつかあります。
\begin{itemize}
\item 日本語環境でよく用いられる、p\LaTeX/up\LaTeX 用のクラスファイル
      \textsf{jsclasses}(奥村さん作)の\texttt{papersize}オプション
      との併用は問題ありません(ただし、このオプションを使用すれば用紙
      サイズ設定には十分ですから、本\textsf{bounddvi}パッケージを併用
      することにも特にメリットはありません)。
\item 2016年以降の\textsf{graphics/graphicx}パッケージや
      \textsf{color}パッケージには用紙サイズ設定機能
      (\texttt{setpagesize}オプション:デフォルトで有効)が
      ありますが、併用しても問題は起きないでしょう。
\item \textsf{hyperref}パッケージも上と同様で、併用しても
      問題は起きないでしょう。
\item \textsf{geometry}パッケージと併用する場合は、
      本\textsf{bounddvi}パッケージを\emph{後から}読み込むほうが
      安全でしょう。特に、\texttt{dvipdfmx}を使用して変換する場合に
      トンボを付けたいなら、\textsf{bounddvi}を後から読み込むことで
      うまくいく可能性があります(付録を参照)。
\end{itemize}

\section*{付録:\texttt{dvips}と\texttt{dvipdfmx}の違い}

一つのDVIファイルに複数の用紙サイズ指定\verb+\special+命令が
埋め込まれる場合があります。このうち、\texttt{dvips}ではDVIファイル
の\emph{最初}に指定されたものが有効になります。
逆に\texttt{dvipdfmx}では、DVIファイルの\emph{最後}に指定されたもの
が有効になります。このため、たとえば\textsf{bounddvi}と
\textsf{geometry}を併用したソース
\begin{verbatim}
  \documentclass{...}
  \usepackage{bounddvi}
  \usepackage[dvipdfm]{geometry}
\end{verbatim}
を\textsf{dvipdfmx}でPDFに変換すると、用紙サイズの設定が正しくなさ
れない可能性があります。

\section*{付録:\texttt{\char92mag}の扱いについて}

本\textsf{bounddvi}パッケージは、日本で広く使われている奥村さんの
\textsf{jsclasses}クラス流の\verb+\mag+の用法をサポートしています。
しかし、\verb+\mag+の使い方はCTANにある多様なパッケージの中で統一
されておらず、大きく分けて二通りの使い方があるようです。

たとえば、物理的なA4サイズ($210\,\mathrm{mm}\times297\,\mathrm{mm}$)
の出力を得たい場合
\begin{quote}
  \texttt{\char92mag=2000}\\
  \texttt{\char92paperwidth=210mm} ($= 420\,\mathrm{truemm}$)\\
  \texttt{\char92paperheight=297mm} ($= 594\,\mathrm{truemm}$)
\end{quote}
と設定するものと
\begin{quote}
  \texttt{\char92mag=2000}\\
  \texttt{\char92paperwidth=105mm} ($= 210\,\mathrm{truemm}$)\\
  \texttt{\char92paperheight=148.5mm} ($= 297\,\mathrm{truemm}$)
\end{quote}
と設定するものとが存在します。
前者は\textsf{geometry}パッケージなどの方式で、おそらく\texttt{dvips}の
\verb+papersize+ specialの挙動(truedimenを正しく解釈せず、trueの付か
ない単位だけを受け付けてあたかもtrue付であるかのように評価)に則った
ものでしょう。後者は\textsf{jsclasses}クラスの方式で、これは
\texttt{dvipdfm(x)}の\verb+pdf:pagesize+ specialとも同じです。
この方式のほうが、truedimenで設定された\LaTeX のほかのレイアウト変数
(\verb+\textwidth+など)に対して一貫性があると思われます。
本\textsf{bounddvi}パッケージがサポートしているのは後者の方式です。

\section*{参考}

\begin{itemize}
\item dvipsやdvipdfmなどで用紙サイズを出力\\
  \texttt{https://www.ma.ns.tcu.ac.jp/Pages/TeX/bounddvi.sty.html}
\end{itemize}

\end{document}