blob: c6d37e605bb2e5b1bd02515702f52f2fa1018a34 (
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
%# -*- coding: utf-8 -*-
\ifx\epTeXinputencoding\undefined\else % defined in e-pTeX (> TL2016)
\epTeXinputencoding utf8 % ensure utf-8 encoding for platex
\fi
\documentclass[a4paper]{jsarticle}
\usepackage{doc}
\usepackage{plautopatch}% load this here to make \GetFileInfo work
\GetFileInfo{plautopatch.sty}
\title{Package \textsf{plautopatch} \fileversion}
\author{Hironobu Yamashita}
\date{\filedate}
\begin{document}
\maketitle
日本のp\LaTeX/up\LaTeX{}フォーマットや専用パッケージが、
これらを知らない\LaTeX{}パッケージ(しばしば海外で作られた
汎用のもの)と衝突することがあります。
最悪の場合にはエラーが出たり、誤った出力が得られたり
することがあります。
この\textsf{plautopatch}の目的は、こうした非互換を意識せずに
済むようにすることです。具体的には、p\LaTeX/up\LaTeX{}と
衝突するパッケージが使われた場合に、その衝突を解消するパッチを
提供するパッケージを必要に応じて自動的に読み込みます。
こうすることで、ソースコードを簡潔にできるだけでなく、
p\LaTeX/up\LaTeX{}で動作するソースと通常の\LaTeX{}ソースの
見た目を近づけることができます。
このパッケージはGitHubで開発しています。
\begin{verbatim}
https://github.com/aminophen/plautopatch
\end{verbatim}
\section*{動作条件}
このパッケージは
\textsf{filehook}パッケージ(Martin Scharrer氏の作)に依存します。
\section*{使い方}
このパッケージを\LaTeX{}ソースの冒頭で読み込みます。
このために、\verb+\RequirePackage{plautopatch}+を
\verb+\documentclass+や他のコマンドよりも\emph{前}に
読み込むことをお勧めします
(クラスファイルなどが問題のあるパッケージを読み込む可能性もあるため)。
例を示します。
\begin{verbatim}
%\RequirePackage{plautopatch}
\documentclass{tarticle}% 縦組クラス(plext使用)
\usepackage{array}% plextと非互換
\begin{document}
...
\end{document}
\end{verbatim}
上記の例では、
\textsf{tarticle}クラスが内部で読み込む\textsf{plext}パッケージと、
ソース中で\verb+\usepackage+している\textsf{array}パッケージが
衝突してエラーになる場合があります。しかし、冒頭で
\verb+\RequirePackage{plautopatch}+とだけ書いておけば、
\textsf{array}パッケージの時点で\textsf{plextarray}パッケージが
追加で読み込まれるため、問題が解消します。
このように自動追加されたパッケージは、\verb+\end{document}+の
時点で次のように一覧として表示されます(複数の場合は
コンマと空白で区切ったリストになります)。
\begin{verbatim}
***** List of packages loaded by `plautopatch': *****
plextarray.
*****************************************************
\end{verbatim}
\section*{現在対応しているパッケージの一覧}
\def\ITEMoTo#1 (#2) -> #3 (#4){%
\item \textsf{#1} (\textsf{#2})\\
$\rightarrow$ \textsf{#3} (\textsf{#4})}
\def\ITEMoTx#1 (#2) -> #3 {%
\item \textsf{#1} (\textsf{#2})\\
$\rightarrow$ \textsf{#3} }
\def\ITEMxTx#1 -> #2 {%
\item \textsf{#1}\\
$\rightarrow$ \textsf{#2} }
\def\ITEMooTo#1 (#2) + #3 (#4) -> #5 (#6){%
\item \textsf{#1} (\textsf{#2}) + \textsf{#3} (\textsf{#4})\\
$\rightarrow$ \textsf{#5} (\textsf{#6})}
\def\ITEMxoTo#1 + #2 (#3) -> #4 (#5){%
\item \textsf{#1} + \textsf{#2} (\textsf{#3})\\
$\rightarrow$ \textsf{#4} (\textsf{#5})}
\def\ITEMxoTx#1 + #2 (#3) -> #4 {%
\item \textsf{#1} + \textsf{#2} (\textsf{#3})\\
$\rightarrow$ \textsf{#4} }
凡例:
\begin{itemize}
\item \texttt{<元のパッケージ>} (\texttt{<元が含まれるバンドル名>})\\
\texttt{<パッチのパッケージ>} (\texttt{<パッチが含まれるバンドル名>})
\end{itemize}
現在のバージョン (\filedate\space\fileversion) がサポートしているのは
下記のパッケージです。
\begin{itemize}
\ITEMoTo doc (latex) -> pldocverb (maintained here!)
\ITEMoTo tracefnt (latex) -> ptrace/uptrace (platex/uplatex)
\ITEMoTo fltrace (latex) -> pfltrace (platex)
\ITEMoTo array (latex-tools) -> plarray (platex-tools)
\ITEMooTo array (latex-tools) + plext (platex) -> plextarray (platex-tools)
\ITEMooTo delarray (latex-tools) + plext (platex) -> plextdelarray (platex-tools)
\ITEMxoTx colortbl + plext (platex) -> plextcolortbl (maintained here!)
\ITEMxTx arydshln -> plarydshln (maintained here!)
\ITEMxoTx arydshln + plext (platex) -> plextarydshln (maintained here!)
\ITEMxTx siunitx -> plsiunitx (maintained here!)
\ITEMoTo everysel (ms) -> pxeverysel (platex-tools)
\ITEMoTo everyshi (ms) -> pxeveryshi (platex-tools)
\ITEMoTo atbegshi (oberdiek) -> pxatbegshi (platex-tools)
\ITEMoTo ftnright (latex-tools) -> pxftnright (platex-tools)
\ITEMoTo multicol (latex-tools) -> pxmulticol (platex-tools)
\ITEMoTo xspace (latex-tools) -> pxxspace (platex-tools)
\ITEMxTx pdfpages -> pxpdfpages (maintained here!)
\ITEMoTo stfloats (sttools) -> pxstfloats (pxsttools)
\ITEMoTx pgfrcs (pgf) -> pxpgfrcs (maintained here!)
\ITEMoTx pgfcore (pgf) -> pxpgfmark (by Takayuki YATO)
\end{itemize}
もちろん、このリストは随時、追加・削除・置き換えていく予定です。
互換性の問題や追加したいパッケージがある場合はご一報ください。
\section*{特定のパッケージを除外したい場合}
デフォルトでは、上記のリストに登録されている\texttt{<元のパッケージ>}が
使われたことを検出すると、全て自動的にパッチを読み込みます。
しかし、時にはこれが逆効果となり、問題が起きる可能性は否定できません。
そのような場合は
\begin{verbatim}
\plautopatchdisable{<元のパッケージ>}
\end{verbatim}
と書くことで、そのパッケージを検出対象から除外します。複数ある場合は
\begin{verbatim}
\plautopatchdisable{<元のパッケージ1>,<元のパッケージ2>}
\end{verbatim}
のようにコンマで区切っていくつでも除外できます。
\section*{変更履歴}
\begin{itemize}
\item 2018/08/21 v0.2 最初のCTANリリース版
\item 2018/08/22 v0.3 元パッケージ検出の改良
\item 2018/09/21 v0.5 \textsf{colortbl}と\textsf{pgf}もサポート
\item 2018/10/02 v0.6 \textsf{arydshln}のサポート
\item 2018/10/27 v0.8 \textsf{everysel}サポートの改良
\item 2018/11/03 v0.9 \textsf{siunitx}のサポート
\item 2018/11/25 v0.9b \textsf{multicol}と\textsf{doc}のサポート
\item 2019/06/06 v0.9c \textsf{siunitx}のパッチ改良
\item 2019/09/05 v0.9d \textsf{xspace}と\textsf{stfloats}のサポート
\end{itemize}
\end{document}
|