review 3.0.0.preview4 → 3.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/NEWS.ja.md +61 -4
  3. data/NEWS.md +61 -4
  4. data/README.md +2 -1
  5. data/doc/config.yml.sample +48 -20
  6. data/doc/config.yml.sample-simple +7 -6
  7. data/doc/format_idg.ja.md +6 -2
  8. data/doc/pdfmaker.ja.md +95 -4
  9. data/doc/pdfmaker.md +79 -0
  10. data/doc/quickstart.ja.md +26 -3
  11. data/doc/quickstart.md +25 -3
  12. data/doc/writing_vertical.ja.md +19 -2
  13. data/lib/review/epubmaker.rb +27 -27
  14. data/lib/review/i18n.yml +1 -0
  15. data/lib/review/init.rb +34 -22
  16. data/lib/review/latexbuilder.rb +95 -18
  17. data/lib/review/pdfmaker.rb +1 -0
  18. data/lib/review/update.rb +60 -25
  19. data/lib/review/version.rb +1 -1
  20. data/review.gemspec +1 -1
  21. data/samples/sample-book/src/config.yml +3 -3
  22. data/samples/syntax-book/config.yml +3 -3
  23. data/templates/latex/config.erb +3 -0
  24. data/templates/latex/review-jlreq/README.md +97 -7
  25. data/templates/latex/review-jlreq/review-base.sty +8 -0
  26. data/templates/latex/review-jlreq/review-jlreq.cls +28 -6
  27. data/templates/latex/review-jsbook/README.md +18 -20
  28. data/templates/latex/review-jsbook/review-base.sty +15 -0
  29. data/templates/latex/review-jsbook/review-jsbook.cls +172 -230
  30. data/test/test_epubmaker_cmd.rb +1 -1
  31. data/test/test_helper.rb +3 -3
  32. data/test/test_image_finder.rb +9 -9
  33. data/test/test_latexbuilder.rb +20 -1
  34. data/test/test_makerhelper.rb +12 -12
  35. data/test/test_pdfmaker_cmd.rb +1 -1
  36. data/test/test_update.rb +18 -4
  37. data/test/test_zip_exporter.rb +7 -7
  38. data/vendor/jsclasses/.gitignore +163 -0
  39. data/vendor/jsclasses/LICENSE +25 -0
  40. data/vendor/jsclasses/Makefile +88 -0
  41. data/vendor/jsclasses/README.md +43 -0
  42. data/vendor/jsclasses/create_archive.sh +59 -0
  43. data/vendor/jsclasses/jis/Makefile +62 -0
  44. data/vendor/jsclasses/jis/jsarticle.cls +1935 -0
  45. data/vendor/jsclasses/jis/jsbook.cls +2026 -0
  46. data/vendor/jsclasses/jis/jsclasses.dtx +5961 -0
  47. data/vendor/jsclasses/jis/jsclasses.ins +8 -0
  48. data/vendor/jsclasses/jis/jslogo.dtx +413 -0
  49. data/vendor/jsclasses/jis/jslogo.ins +4 -0
  50. data/vendor/jsclasses/jis/jslogo.sty +223 -0
  51. data/vendor/jsclasses/jis/jspf.cls +1766 -0
  52. data/vendor/jsclasses/jis/jsreport.cls +2020 -0
  53. data/vendor/jsclasses/jis/jsverb.dtx +322 -0
  54. data/vendor/jsclasses/jis/jsverb.ins +4 -0
  55. data/vendor/jsclasses/jis/jsverb.sty +128 -0
  56. data/vendor/jsclasses/jis/kiyou.cls +1882 -0
  57. data/vendor/jsclasses/jis/minijs.sty +52 -0
  58. data/vendor/jsclasses/jis/okumacro.dtx +1179 -0
  59. data/vendor/jsclasses/jis/okumacro.ins +4 -0
  60. data/vendor/jsclasses/jis/okumacro.sty +455 -0
  61. data/vendor/jsclasses/jis/okuverb.dtx +243 -0
  62. data/vendor/jsclasses/jis/okuverb.ins +4 -0
  63. data/vendor/jsclasses/jis/okuverb.sty +102 -0
  64. data/vendor/jsclasses/jis/winjis.sty +87 -0
  65. data/vendor/jsclasses/jsarticle.cls +1938 -0
  66. data/vendor/jsclasses/jsbook.cls +2029 -0
  67. data/vendor/jsclasses/jsclasses.dtx +5966 -0
  68. data/vendor/jsclasses/jsclasses.ins +8 -0
  69. data/vendor/jsclasses/jsclasses.pdf +0 -0
  70. data/vendor/jsclasses/jslogo.dtx +424 -0
  71. data/vendor/jsclasses/jslogo.ins +4 -0
  72. data/vendor/jsclasses/jslogo.pdf +0 -0
  73. data/vendor/jsclasses/jslogo.sty +223 -0
  74. data/vendor/jsclasses/jspf.cls +1769 -0
  75. data/vendor/jsclasses/jsreport.cls +2023 -0
  76. data/vendor/jsclasses/jsverb.dtx +333 -0
  77. data/vendor/jsclasses/jsverb.ins +4 -0
  78. data/vendor/jsclasses/jsverb.pdf +0 -0
  79. data/vendor/jsclasses/jsverb.sty +128 -0
  80. data/vendor/jsclasses/kiyou.cls +1885 -0
  81. data/vendor/jsclasses/minijs.sty +52 -0
  82. data/vendor/jsclasses/okumacro.dtx +1184 -0
  83. data/vendor/jsclasses/okumacro.ins +4 -0
  84. data/vendor/jsclasses/okumacro.pdf +0 -0
  85. data/vendor/jsclasses/okumacro.sty +458 -0
  86. data/vendor/jsclasses/okuverb.dtx +254 -0
  87. data/vendor/jsclasses/okuverb.ins +4 -0
  88. data/vendor/jsclasses/okuverb.pdf +0 -0
  89. data/vendor/jsclasses/okuverb.sty +102 -0
  90. data/vendor/jsclasses/winjis.sty +87 -0
  91. metadata +55 -2
@@ -0,0 +1,52 @@
1
+ % minimal jsarticle-like fonts
2
+ %
3
+ \NeedsTeXFormat{pLaTeX2e}
4
+ \ProvidesPackage{minijs}[2018/02/04 okumura, texjporg]
5
+ %
6
+ % if jsclasses loaded, abort loading this package
7
+ \ifx\@jsc@uplatextrue\@undefined\else
8
+ \PackageInfo{minijs}{jsclasses does not need minijs, exiting}
9
+ \expandafter\endinput
10
+ \fi
11
+ %
12
+ % "fake" jsarticle
13
+ \expandafter\def\csname ver@jsarticle.cls\endcsname{}
14
+ %
15
+ % min/goth -> jis/jisg (for pLaTeX only)
16
+ \ifx\ucs\@undefined
17
+ \@for\@tempa:=5,6,7,8,9,10,10.95,12,14.4,17.28,20.74,24.88\do{%
18
+ \expandafter\let\csname JY1/mc/m/n/\@tempa\endcsname\relax
19
+ \expandafter\let\csname JY1/gt/m/n/\@tempa\endcsname\relax
20
+ \expandafter\let\csname JT1/mc/m/n/\@tempa\endcsname\relax
21
+ \expandafter\let\csname JT1/gt/m/n/\@tempa\endcsname\relax
22
+ }
23
+ \def\Cjascale{0.924690}
24
+ \DeclareFontShape{JY1}{mc}{m}{n}{<-> s * [0.961] jis}{}
25
+ \DeclareFontShape{JY1}{gt}{m}{n}{<-> s * [0.961] jisg}{}
26
+ \DeclareFontShape{JT1}{mc}{m}{n}{<-> s * [0.961] tmin10}{}
27
+ \DeclareFontShape{JT1}{gt}{m}{n}{<-> s * [0.961] tgoth10}{}
28
+ \fi
29
+ %
30
+ % \@setfontsize with \parindent and \(x)kanjiskip settings
31
+ \def\@setfontsize#1#2#3{\@nomath#1%
32
+ \ifx\protect\@typeset@protect
33
+ \let\@currsize#1%
34
+ \fi
35
+ \fontsize{#2}{#3}\selectfont
36
+ \ifdim\parindent>\z@ \parindent=1zw \fi
37
+ \kanjiskip=0zw plus .1zw minus .01zw
38
+ \xkanjiskip=0.25em plus 0.15em minus 0.06em}
39
+ %
40
+ % ad-hoc "relation font"
41
+ \DeclareRobustCommand\rmfamily
42
+ {\not@math@alphabet\rmfamily\mathrm
43
+ \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont}
44
+ \DeclareRobustCommand\sffamily
45
+ {\not@math@alphabet\sffamily\mathsf
46
+ \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont}
47
+ \DeclareRobustCommand\ttfamily
48
+ {\not@math@alphabet\ttfamily\mathtt
49
+ \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont}
50
+ \normalsize
51
+ %
52
+ \endinput
@@ -0,0 +1,1184 @@
1
+ % ^^A -*- japanese-latex -*-
2
+ %
3
+ \ifx\epTeXinputencoding\undefined\else
4
+ \epTeXinputencoding utf8 % ^^A added (2017-10-04)
5
+ \fi
6
+ %
7
+ % \iffalse
8
+ %
9
+ % okumacro.dtx
10
+ % 私家版マクロ集
11
+ % okumura@okumuralab.org
12
+ % http://oku.edu.mie-u.ac.jp/~okumura/
13
+ %
14
+ %<okumacro>\NeedsTeXFormat{pLaTeX2e}
15
+ %<okumacro>\ProvidesPackage{okumacro}[2018/06/11 okumura, texjporg]
16
+ %<*driver>
17
+ \documentclass{jsarticle}
18
+ \usepackage{doc}
19
+ \xspcode"5C=1 %% \
20
+ \xspcode"22=1 %% "
21
+ \usepackage{okumacro}
22
+ \addtolength{\textwidth}{-1in}
23
+ \addtolength{\evensidemargin}{1in}
24
+ \addtolength{\oddsidemargin}{1in}
25
+ \addtolength{\marginparwidth}{1in}
26
+ \setlength\marginparsep{5pt}
27
+ \setlength\marginparpush{0pt}
28
+ % \OnlyDescription
29
+ \CodelineNumbered
30
+ \DisableCrossrefs
31
+ \setcounter{StandardModuleDepth}{1}
32
+ \GetFileInfo{okumacro.sty}
33
+ \begin{document}
34
+ \DocInput{okumacro.dtx}
35
+ \end{document}
36
+ %</driver>
37
+ %
38
+ % \fi
39
+ %
40
+ % \title{私家版マクロ集}
41
+ % \author{奥村晴彦}
42
+ % \date{\filedate}
43
+ % \maketitle
44
+ %
45
+ % \MakeShortVerb{\|}
46
+ %
47
+ % \section{はじめに}
48
+ %
49
+ % これは『\pLaTeXe 美文書作成入門』などの本を作ったときに使ったマクロを
50
+ % 集めたものです。作っただけでテストもしていないものなども混じっている
51
+ % 可能性があります。概して他の方にはあまり利用価値がないものです。
52
+ %
53
+ % [2002-12-19] いろいろなものに収録していただく際にライセンスを明確にする
54
+ % 必要が生じてきました。アスキーのものが最近は(modified)BSDライセンスになっ
55
+ % ていますので,私のものもそれに準じて(modified)BSDとすることにします。
56
+ %
57
+ % [2016-07-30] 従来は,ascmac→okumacroの順に読み込んだ場合にエラーが出て
58
+ % いましたが,新しい仕様では,ascmacとokumacroの両方を読み込む場合には
59
+ % 「後に読み込んだほう」が勝ちます。
60
+ % 具体的には |\keytop|,|\return|,screen環境,shadebox環境があります。
61
+ %
62
+ % \section{数値集}
63
+ %
64
+ % \begin{itemize}
65
+ % \item B5: $182\,\mathrm{mm} \times 257\,\mathrm{mm}$
66
+ % \item B4: $257\,\mathrm{mm} \times 364\,\mathrm{mm}$
67
+ % \item A5: $148\,\mathrm{mm} \times 210\,\mathrm{mm}$
68
+ % \item A4: $210\,\mathrm{mm} \times 297\,\mathrm{mm}$
69
+ % \item $1\,\mathrm{in} = 72.27\,\mathrm{pt} = 2.54\,\mathrm{cm}$
70
+ % \item $1\,\mathrm{Q} = 0.25\,\mathrm{mm} = 0.711319\,\mathrm{pt}$
71
+ % \item $1\,\mathrm{pt} = 1.405839\,\mathrm{Q} = 0.3514598\,\mathrm{mm}$
72
+ % \item min10: $1\,\mathrm{zw} = 9.62216\,\mathrm{pt}
73
+ % = 3.3818\,\mathrm{mm} = 13.5272\,\mathrm{Q}$,
74
+ % $1\,\mathrm{zh} = 9.16443\,\mathrm{pt}$
75
+ % \item cmr10: $1\,\mathrm{em} = 10\,\mathrm{pt}$,
76
+ % $1\,\mathrm{ex} = 4.30554\,\mathrm{pt}$
77
+ % \end{itemize}
78
+ %
79
+ % \StopEventually{}
80
+ %
81
+ % \section{雑マクロ}
82
+ %
83
+ % 以下が実際のマクロ集です。
84
+ %
85
+ % \begin{macrocode}
86
+ %<*okumacro>
87
+ % \end{macrocode}
88
+ %
89
+ % \begin{macro}{\ruby}
90
+ %
91
+ % |\ruby{奥}{おく}\ruby{村}{むら}| で\ruby{奥}{おく}\ruby{村}{むら}と
92
+ % なります。|\ruby{奥村}{おくむら}| でもかまいませんが,奥と村の間で
93
+ % 行分割ができなくなります。
94
+ %
95
+ % 和文ベースラインが $88:12$ の位置にあることを仮定して支柱を入れました。
96
+ %
97
+ % バグ: |1\ruby{奥}{おく}1| のような場合に |\xkanjiskip| が入りません。
98
+ %
99
+ % [2003-02-09] ゴシック体のルビがゴシック体になるバグ?を修正しました。
100
+ %
101
+ % [2003-05-29] 齋藤修三郎さんのOTFパッケージのexpertオプションに対応しました。
102
+ %
103
+ % [2003-09-01] オプション引数で幅が指定できるようにしました [2003-10-02バグフィックス]。
104
+ %
105
+ % [2010-03-14] ルビの直後で改行できなかったので,
106
+ % 親字が和文と仮定して直後に |\kanjiskip| を入れました。
107
+ %
108
+ % [2016-08-16] 縦組に対応。
109
+ %
110
+ % [2016-08-16] 「前に |\kanjiskip| が入らない」
111
+ % 「前後の欧文文字との間に |\xkanjiskip| が入らない」
112
+ % 「後ろの禁則処理が効かない」問題を解決するために和文ゴースト処理を追加。
113
+ %
114
+ % \begin{macrocode}
115
+ \providecommand{\rubyfamily}{}
116
+ \def\kanjistrut{\iftdir
117
+ \vrule \@height0.5zw \@depth0.5zw \@width\z@
118
+ \else
119
+ \vrule \@height0.88zw \@depth0.12zw \@width\z@
120
+ \fi}
121
+ \chardef\okumacro@zsp=\jis"2121\relax
122
+ \newcommand{\ruby}[3][0zw]{%
123
+ \okumacro@zsp
124
+ \kern-1zw\relax
125
+ \dimen3=\f@size\p@
126
+ \setbox1=\hbox{#2}%
127
+ \setbox3=\hbox{\rubyfamily\fontsize{0.5\dimen3}{0pt}\selectfont #3}%
128
+ \dimen1=#1\relax
129
+ \ifdim\dimen1=\z@
130
+ \ifdim\wd1>\wd3 \dimen1=\wd1 \else \dimen1=\wd3 \fi
131
+ \else
132
+ \ifdim\dimen1<\wd1
133
+ \dimen1=\wd1
134
+ \fi
135
+ \fi
136
+ \hbox{%
137
+ \kanjiskip=0pt plus 2fil
138
+ \xkanjiskip=0pt plus 2fil
139
+ \vbox{%
140
+ \hbox to \dimen1{\rubyfamily
141
+ \fontsize{0.5\dimen3}{0pt}\selectfont \kanjistrut
142
+ \ifdim\dimen1<\wd3
143
+ \hss\unhbox3\hss
144
+ \else
145
+ \hfil\unhbox3\hfil
146
+ \fi
147
+ }%
148
+ \nointerlineskip
149
+ \hbox to \dimen1{\kanjistrut\hfil\unhbox1\hfil}}}%
150
+ \kern-1zw\relax\okumacro@zsp}
151
+ % \end{macrocode}
152
+ % \end{macro}
153
+ %
154
+ % \begin{macro}{\Ruby}
155
+ %
156
+ % ルビが両側にルビの半文字分ずつはみ出してもいい場合に使います。
157
+ % ただ,これを連続して使うと,ルビが重なり合ってしまいます。
158
+ %
159
+ % これはあまり存在意義がないのでとりあえず消しておきます。
160
+ %
161
+ % \begin{macrocode}
162
+ % \newcommand{\Ruby}[2]{%
163
+ % \leavevmode
164
+ % \setbox0=\hbox{#1}%
165
+ % \mytempdima=\f@size\p@
166
+ % \setbox1=\hbox{\fontsize{0.5\mytempdima}{0pt}\selectfont #2}%
167
+ % \dimen0=\wd1 \advance \dimen0 by -0.5\mytempdima
168
+ % \ifdim\wd0>\dimen0 \dimen0=\wd0 \fi
169
+ % \hbox{%
170
+ % \kanjiskip=0pt plus 2fil
171
+ % \xkanjiskip=0pt plus 2fil
172
+ % \vbox{%
173
+ % \hbox to \dimen0{\normalfont\rubyfamily
174
+ % \fontsize{0.5\mytempdima}{0pt}\selectfont \kanjistrut\hss#2\hss}%
175
+ % \nointerlineskip
176
+ % \hbox to \dimen0{\kanjistrut\hfil#1\hfil}}}}
177
+ % \end{macrocode}
178
+ % \end{macro}
179
+ %
180
+ % \begin{macro}{\kenten}
181
+ %
182
+ % \kenten{圏点}を振るコマンドです。
183
+ %
184
+ % [2016-07-30] ルビと圏点の高さを合わせるつもりでしたが,間違って
185
+ % 上シフト量を0.63zwとしていましたので,正しい値0.75zwに直しました。
186
+ %
187
+ % [2017-03-11] 「前後の欧文文字との間に |\xkanjiskip| が入らない」
188
+ % 「後ろの禁則処理が効かない」問題を解決するために和文ゴースト処理を追加。
189
+ %
190
+ % [2017-10-04] もともと |\kenten| では
191
+ %\begin{verbatim}
192
+ % \setbox1=\hbox to \z@{・\hss}%
193
+ %\end{verbatim}
194
+ % としていましたが,2017年9月の\pTeX (p3.7.2)に対応するため
195
+ %\begin{verbatim}
196
+ % \setbox1=\hbox to\z@{\hbox to 1zw{\hss・\hss}\hss}%
197
+ %\end{verbatim}
198
+ % に変更しました。これで,p3.7.1以前・p3.7.2以降どちらもOKです。
199
+ %
200
+ % \begin{macrocode}
201
+ \def\kenten#1{%
202
+ \okumacro@zsp
203
+ \kern-1zw\relax
204
+ \setbox1=\hbox to\z@{\hbox to 1zw{\hss ・\hss}\hss}%
205
+ \ht1=.63zw
206
+ \@kenten#1\end\relax
207
+ \kern-1zw\relax\okumacro@zsp}
208
+ \def\@kenten#1#2{%
209
+ \ifx#1\end \let\next=\relax \else
210
+ \raise.75zw\copy1\nobreak #1\ifx#2\end\else\hskip\kanjiskip\relax\fi
211
+ \let\next=\@kenten
212
+ \fi\next#2}
213
+ % \end{macrocode}
214
+ % \end{macro}
215
+ %
216
+ % \begin{macro}{\kintou}
217
+ %
218
+ % 簡単な均等割りコマンドです。
219
+ %
220
+ % \begin{macrocode}
221
+ \newcommand{\kintou}[2]{%
222
+ \leavevmode
223
+ \hbox to #1{%
224
+ \kanjiskip=0pt plus 1fil minus 1fil
225
+ \xkanjiskip=\kanjiskip
226
+ #2}}
227
+ % \end{macrocode}
228
+ % \end{macro}
229
+ %
230
+ % \begin{macro}{\曜}
231
+ %
232
+ % 今日の曜日を出力します。
233
+ %
234
+ % \begin{macrocode}
235
+ \newcommand{\曜}{{\@tempcnta=\year \@tempcntb=\month
236
+ \ifnum \@tempcntb<3
237
+ \advance \@tempcnta by -1
238
+ \advance \@tempcntb by 12
239
+ \fi
240
+ \multiply \@tempcntb by 13
241
+ \advance \@tempcntb by 8
242
+ \divide \@tempcntb by 5
243
+ \advance \@tempcntb by \@tempcnta
244
+ \divide \@tempcnta by 4
245
+ \advance \@tempcntb by \@tempcnta
246
+ \divide \@tempcnta by 25
247
+ \advance \@tempcntb by -\@tempcnta
248
+ \divide \@tempcnta by 4
249
+ \advance \@tempcntb by \@tempcnta
250
+ \advance \@tempcntb by \day
251
+ \@tempcnta=\@tempcntb
252
+ \divide \@tempcntb by 7
253
+ \multiply \@tempcntb by 7
254
+ \advance \@tempcnta by -\@tempcntb
255
+ \ifcase \@tempcnta 日\or 月\or 火\or 水\or 木\or 金\or 土\fi}}
256
+ % \end{macrocode}
257
+ % \end{macro}
258
+ %
259
+ % \begin{macro}{\挨拶}
260
+ %
261
+ % 時候の挨拶を出力します。
262
+ %
263
+ % \begin{macrocode}
264
+ \def\挨拶{\noindent 拝啓\hspace{1zw}\ifcase\month\or
265
+ 厳寒\or 春寒\or 早春\or 陽春\or 新緑\or 向暑\or
266
+ 猛暑\or 残暑\or 初秋\or 仲秋\or 晩秋\or 初冬\fi
267
+ の候,ますますご清栄のこととお喜び申し上げます。}
268
+ % \end{macrocode}
269
+ % \end{macro}
270
+ %
271
+ % \begin{macro}{\mytt}
272
+ %
273
+ % |\texttt| では \verb/|/ |!| |@| |*| |-| |+| |=| |[| |]| |:| |;|
274
+ % |"| |`| |'| |<| |>| |?| |,| |.| |/| はそのまま出せますが,
275
+ % |!| |?| |.| |:| の後は余分な空きが入ります。
276
+ % また,|#| |$| |&| |_| |{| |}| は \texttt{\bslash} で逃げれば使えますが,
277
+ % そうしても |_| |{| |}| は正しい \texttt{cmtt} フォントになりません。
278
+ % さらに,|~| |^| は \texttt{\bslash} を付けても後続の文字のアクセント
279
+ % のようになってしまいます(|\~{}|,|\^{}| のようにすれば何とか
280
+ % なりますが)。ここで定義する |\mytt| マクロを使えば,
281
+ % |{| |}| は \texttt{\bslash} で逃げれば正しい \texttt{cmtt} フォント
282
+ % になり,
283
+ % |#| |&| |_| |~| |^| は \texttt{\bslash} で逃げなくてもそのまま
284
+ % で出力できます。
285
+ % |$| もそのまま出力できるようにしていたのですが,
286
+ % 数式モードは使えた方が便利なので,外しました。
287
+ % また,|\\| で円印が出ます。
288
+ % |/|,|\\|,|.|,|@|,|-| の後ろで改行できるようにしてあります。
289
+ % |{\mytt ...}| のようにして使います(|\mytt{...}| ではありません)。
290
+ % スペースは若干伸縮するようにしました。
291
+ % |\mbox{\mytt ...}| のようにして使えば,
292
+ % 和文・欧文間のグルーの自動挿入はしません。
293
+ %
294
+ % \begin{macrocode}
295
+ \def\myallowbreak{\@ifnextchar\egroup{}{\penalty\exhyphenpenalty}{}}
296
+ \begingroup
297
+ \catcode`\-=\active
298
+ \catcode`\.=\active
299
+ \catcode`\/=\active
300
+ \gdef\mytth@@k{%
301
+ \catcode`\-=\active \def-{\char`\-\myallowbreak}%
302
+ \catcode`\.=\active \def.{\char`\.\myallowbreak}%
303
+ \catcode`\/=\active \def/{\char`\/\myallowbreak}%
304
+ }
305
+ \endgroup
306
+ \def\mytt{\ttfamily
307
+ \catcode`\#=12
308
+ \catcode`\&=12
309
+ \catcode`\^=12
310
+ \catcode`\~=12
311
+ \catcode`\_=12
312
+ \chardef\{=`\{
313
+ \chardef\}=`\}
314
+ \chardef\_=`\_
315
+ % \def\\{Y\llap=\penalty\exhyphenpenalty{}}% ¥記号
316
+ \def\\{\char"5C\penalty\exhyphenpenalty{}}% バックスラッシュ
317
+ % \spaceskip=.5em plus.25em minus.15em
318
+ \spaceskip=.32em plus.16em minus.09em
319
+ \frenchspacing
320
+ \noautoxspacing
321
+ \mytth@@k}
322
+ % \end{macrocode}
323
+ % \end{macro}
324
+ %
325
+ % これ以外の記号は次のようにして出力できます。
326
+ %
327
+ % \begin{quote}
328
+ % |\texttt{\char"20}| \qquad \texttt{\char"20} 見える空白 \\
329
+ % |\texttt{\char"5C}| \qquad \texttt{\char"5C} バックスペース \\
330
+ % |\texttt{\char"0B}| \qquad \texttt{\char"0B} 上向き矢印 \\
331
+ % |\texttt{\char"0C}| \qquad \texttt{\char"0C} 下向き矢印 \\
332
+ % |\texttt{\char"0D}| \qquad \texttt{\char"0D} 左右対称なシングルクォート
333
+ % \end{quote}
334
+ %
335
+ % \begin{macro}{\yen}
336
+ % \begin{macro}{\BS}
337
+ %
338
+ % |\yen| は円印,|\BS| はバックスラッシュです。
339
+ %
340
+ % \begin{macrocode}
341
+ \DeclareRobustCommand{\yen}{{\ooalign{Y\crcr\hss=\hss}}}
342
+ \providecommand{\BS}{\texttt{\char"5C}}
343
+ % \end{macrocode}
344
+ % \end{macro}
345
+ % \end{macro}
346
+ %
347
+ % \begin{macro}{\bslash}
348
+ %
349
+ % バックスラッシュは |doc| パッケージなどでの定義に従っておきます。
350
+ %
351
+ % \begin{macrocode}
352
+ {\catcode`\|=\z@ \catcode`\\=12|gdef|bslash{\}}
353
+ % \end{macrocode}
354
+ % \end{macro}
355
+ %
356
+ % \begin{macro}{\asciibar}
357
+ %
358
+ % 真ん中が少し途切れた縦棒 \asciibar\ です。
359
+ % \verb/|/ に対応するASCII文字です。
360
+ %
361
+ % \begin{macrocode}
362
+ \newcommand{\asciibar}{%
363
+ \makebox[0.525em]{\rule[-0.2ex]{0.15ex}{0.7ex}\kern-0.15ex
364
+ \rule[0.8ex]{0.15ex}{0.7ex}}}
365
+ % \end{macrocode}
366
+ % \end{macro}
367
+ %
368
+ % \begin{macro}{\−−}
369
+ % \begin{macro}{\――}
370
+ %
371
+ % 倍角のダーシです。昔は |\rule[0.33zh]{2zw}{.03zh}| としていましたが,
372
+ % ちょっと低すぎるようです。和文フォントのベースライン
373
+ % は $88:12$ のところにあるものが多いので,0.38\,zwのところに中心線が
374
+ % 来るほうがいいようです。太さもちょっとだけ太くしました。
375
+ %
376
+ % \begin{macrocode}
377
+ % \def\−−{\rule[0.36zw]{2zw}{0.04zw}}
378
+ % \end{macrocode}
379
+ %
380
+ % さらによく考えたら |\scalebox{2}[1]{―}| のほうがよさそうなので,
381
+ % |graphics| または |graphicx| パッケージを読み込んだ場合はこちらを使うようにしました。
382
+ %
383
+ % \begin{macrocode}
384
+ % \def\−−{\@ifundefined{scalebox}{\rule[0.36zw]{2zw}{0.04zw}}{\scalebox{2}[1]{―}}}
385
+ % \end{macrocode}
386
+ %
387
+ % さらにいろいろなご意見をいただき,次のように直しました。
388
+ %
389
+ % \begin{macrocode}
390
+ \def\−−{―\kern-.5zw―\kern-.5zw―}
391
+ % \end{macrocode}
392
+ %
393
+ % 上のものは全角マイナス二つでしたが,全角ダーシ二つでもいいようにしました。
394
+ %
395
+ % \begin{macrocode}
396
+ \def\――{―\kern-.5zw―\kern-.5zw―}
397
+ % \end{macrocode}
398
+ %
399
+ % [2016-12-04] \pLaTeX で通るコードが \upLaTeX で通らなくなることを防ぐために,u\pLaTeX の場合にはU+FF0D,U+2014で定義したものも別途用意しました。
400
+ %
401
+ % \begin{macrocode}
402
+ \ifx\ucs\@undefined\else
403
+ \begingroup
404
+ \kansujichar1="FF0D
405
+ \kansujichar2="2014
406
+ \expandafter\expandafter\expandafter\gdef
407
+ \expandafter\csname\expandafter\kansuji\expandafter1%
408
+ \expandafter\endcsname\kansuji1{―\kern-.5zw―\kern-.5zw―}
409
+ \expandafter\expandafter\expandafter\gdef
410
+ \expandafter\csname\expandafter\kansuji\expandafter2%
411
+ \expandafter\endcsname\kansuji2{―\kern-.5zw―\kern-.5zw―}
412
+ \endgroup
413
+ \fi
414
+ % \end{macrocode}
415
+ %
416
+ % \end{macro}
417
+ % \end{macro}
418
+ %
419
+ %
420
+ % \section{キートップ,○数字}
421
+ %
422
+ % \begin{macro}{\removept}
423
+ %
424
+ % |#1| に与えたdimenレジスタの pt を消した数値を |#2| のマクロに
425
+ % 定義します。
426
+ %
427
+ % \begin{macrocode}
428
+ \newcommand{\removept}[2]{%
429
+ \edef#2{\expandafter\@removePT\the#1}}
430
+ {\catcode`p=12 \catcode`t=12 \gdef\@removePT#1pt{#1}}
431
+ % しかし latex.ltx で次のように定義されていました。
432
+ % これをそのまま使ったらよかった。
433
+ % \begingroup
434
+ % \catcode`P=12
435
+ % \catcode`T=12
436
+ % \lowercase{
437
+ % \def\x{\def\rem@pt##1.##2PT{##1\ifnum##2>\z@.##2\fi}}}
438
+ % \expandafter\endgroup\x
439
+ % \def\strip@pt{\expandafter\rem@pt\the}
440
+ % \end{macrocode}
441
+ % \end{macro}
442
+ %
443
+ % \begin{macro}{\keytop}
444
+ %
445
+ % これを使ってキートップ記号を作ります。
446
+ %
447
+ % [2016-07-30] |\keytop| はp\LaTeX のascmacパッケージ(tascmac.sty)でも
448
+ % 定義されていますが,ascmacの定義では周囲と同じファミリのままになっていて,
449
+ % okumacroでは中の文字をサンセリフ体に変更しています。
450
+ % 両方のパッケージを読み込む場合は,後に読み込んだほうの定義が勝ちます。
451
+ % okumacroが勝つ場合には常にサンセリフ体に変更するキートップ記号を出力しますし,
452
+ % ascmacが勝つ場合は周囲と同じファミリになります。
453
+ %
454
+ % また,新たに |\okukeytop| という命令を追加します。これはascmacと干渉せず,
455
+ % 常にサンセリフ体に変更するキートップ記号を出力できます。
456
+ %
457
+ % \begin{macrocode}
458
+ \newcommand{\okukeytop}[1]{{\leavevmode\kern1pt
459
+ \setbox1=\hbox{\normalfont\sffamily [}%
460
+ \dimen1=\ht1
461
+ \removept{\dimen1}{\tempC}%
462
+ \setbox0=\hbox{\normalfont\sffamily #1}%
463
+ \dp0=0pt
464
+ \dimen0=\wd0
465
+ \ifdim\dimen0<\ht1 \dimen0=\ht1 \fi
466
+ \advance \dimen0 by 5pt
467
+ \removept{\dimen0}{\tempA}%
468
+ \divide \dimen0 by 2
469
+ \removept{\dimen0}{\tempB}%
470
+ \unitlength=1pt
471
+ \advance \dimen1 by 2pt
472
+ \hbox{\vrule height\dimen1 depth2pt width0pt}%
473
+ \begin{picture}(\tempA,\tempC)
474
+ \put(0,0){\line(0,1){\tempC}}
475
+ \put(\tempA,0){\line(0,1){\tempC}}
476
+ \put(\tempB,0){\oval(\tempA,4)[b]}
477
+ \put(\tempB,\tempC){\oval(\tempA,4)[t]}
478
+ \put(\tempB,0){\makebox(0,0)[b]{\box0}}
479
+ \end{picture}\kern1pt}}
480
+ \expandafter\ifx\csname ver@tascmac.sty\endcsname\relax
481
+ \newcommand{\keytop}{\okukeytop}
482
+ \else
483
+ \renewcommand{\keytop}{\okukeytop}
484
+ \fi
485
+ % \end{macrocode}
486
+ % \end{macro}
487
+ %
488
+ % \begin{macro}{\return}
489
+ %
490
+ % リターンキーの記号です。
491
+ %
492
+ % [2016-07-30] |\return| はp\LaTeX のascmacパッケージ(tascmac.sty)でも
493
+ % 定義されていますが,okumacroがリターンのキートップ記号を出力するのに対し,
494
+ % ascmacではリターンの矢印文字{\font\ASCGRP=ascgrp \ASCGRP\char"20}だけ
495
+ % を出す命令になっています。
496
+ % 両方のパッケージを読み込む場合は,後に読み込んだほうの定義が勝ちます。
497
+ % okumacroが勝つ場合には\okureturn を出力しますし,
498
+ % ascmacが勝つ場合は{\font\ASCGRP=ascgrp \ASCGRP\char"20}を出力します。
499
+ %
500
+ % また,新たに |\okureturn| という命令を追加します。これはascmacと干渉せず,
501
+ % 常にリターンのキートップ記号\okureturn を出力できます。
502
+ %
503
+ % \begin{macrocode}
504
+ \def\RETMARK{{\unitlength=1pt
505
+ \setbox0=\hbox{\normalfont\ttfamily [}%
506
+ \dimen0=\ht0
507
+ \removept{\dimen0}{\tempA}%
508
+ \advance \dimen0 by -1pt
509
+ \removept{\dimen0}{\tempB}%
510
+ \begin{picture}(\tempA,\tempA)
511
+ \put(\tempA,1){\line(0,1){\tempB}}
512
+ \put(\tempA,1){\vector(-1,0){\tempA}}
513
+ \end{picture}}}
514
+ \newcommand{\okureturn}{\okukeytop{\RETMARK}}
515
+ \expandafter\ifx\csname ver@tascmac.sty\endcsname\relax
516
+ \newcommand{\return}{\okureturn}
517
+ \else
518
+ \renewcommand{\return}{\okureturn}
519
+ \fi
520
+ % \end{macrocode}
521
+ % \end{macro}
522
+ %
523
+ % \begin{macro}{\upkey}
524
+ % \begin{macro}{\downkey}
525
+ % \begin{macro}{\rightkey}
526
+ % \begin{macro}{\leftkey}
527
+ %
528
+ % 上下右左の矢印キーです。
529
+ %
530
+ % \begin{macrocode}
531
+ \newcommand{\upkey}{\raisebox{-2pt}{%
532
+ \setlength{\unitlength}{1pt}%
533
+ \thinlines
534
+ \begin{picture}(14,9)
535
+ \put(7,2){\vector(0,1){8}}
536
+ \put(1,2){\line(0,1){7}}
537
+ \put(13,2){\line(0,1){7}}
538
+ \put(7,9){\oval(12,4)[t]}
539
+ \put(7,2){\oval(12,4)[b]}
540
+ \end{picture}%
541
+ }}
542
+ \newcommand{\downkey}{\raisebox{-2pt}{%
543
+ \setlength{\unitlength}{1pt}%
544
+ \thinlines
545
+ \begin{picture}(14,9)
546
+ \put(7,10){\vector(0,-1){8}}
547
+ \put(1,2){\line(0,1){7}}
548
+ \put(13,2){\line(0,1){7}}
549
+ \put(7,9){\oval(12,4)[t]}
550
+ \put(7,2){\oval(12,4)[b]}
551
+ \end{picture}%
552
+ }}
553
+ \newcommand{\rightkey}{\raisebox{-2pt}{%
554
+ \setlength{\unitlength}{1pt}%
555
+ \thinlines
556
+ \begin{picture}(14,9)
557
+ \put(3,6){\vector(1,0){8}}
558
+ \put(1,2){\line(0,1){7}}
559
+ \put(13,2){\line(0,1){7}}
560
+ \put(7,9){\oval(12,4)[t]}
561
+ \put(7,2){\oval(12,4)[b]}
562
+ \end{picture}%
563
+ }}
564
+ \newcommand{\leftkey}{\raisebox{-2pt}{%
565
+ \setlength{\unitlength}{1pt}%
566
+ \thinlines
567
+ \begin{picture}(14,9)
568
+ \put(11,6){\vector(-1,0){8}}
569
+ \put(1,2){\line(0,1){7}}
570
+ \put(13,2){\line(0,1){7}}
571
+ \put(7,9){\oval(12,4)[t]}
572
+ \put(7,2){\oval(12,4)[b]}
573
+ \end{picture}%
574
+ }}
575
+ % \end{macrocode}
576
+ % \end{macro}
577
+ % \end{macro}
578
+ % \end{macro}
579
+ % \end{macro}
580
+ %
581
+ % \begin{macro}{\MARU}
582
+ %
583
+ % 丸で囲んだ文字です。
584
+ %
585
+ % [2003-01-24] |graphicx| のとき少し見映えが良くなるようにしました。
586
+ %
587
+ % \begin{macrocode}
588
+ % \newcommand{\MARU}[1]{{%
589
+ % \ooalign{\hfil#1\/\hfil\crcr\raise.167ex\hbox{\mathhexbox20D}}}}
590
+ \newcommand{\MARU}[1]{{%
591
+ \ooalign{\hfil
592
+ \@ifundefined{scalebox}{%
593
+ #1\/\hfil\crcr\raise.167ex}{\raise.1zw\hbox{\scalebox{0.8}{#1\/}}\hfil\crcr\raise.1zw}%
594
+ \hbox{\fontencoding{OMS}\fontfamily{cmsy}\fontseries{m}\fontshape{n}\selectfont
595
+ \char"0D}}}}
596
+ % \end{macrocode}
597
+ % \end{macro}
598
+ %
599
+ % その他のロゴです。
600
+ %
601
+ % \begin{macrocode}
602
+ % \newcommand{\MuTeX}{M\kern-.15em\raise.2ex\hbox{u}\kern-.32em\TeX}
603
+ \newcommand{\PiC}{P\kern-.12em\lower.5ex\hbox{I}\kern-.075emC}
604
+ \newcommand{\PiCTeX}{\PiC\kern-.11em\TeX}
605
+ \newcommand{\JTeX}{\leavevmode\lower.5ex\hbox{J}\kern-.17em\TeX}
606
+ \newcommand{\JLaTeX}{\leavevmode\lower.5ex\hbox{\rm J}\kern-.17em\LaTeX}
607
+ \DeclareRobustCommand{\JBibTeX}{$\mbox{%
608
+ \lower.5ex\hbox{J}\ifx\f@family\cmr\kern-.15em\else\kern-.05em\fi
609
+ \BibTeX}$}
610
+ \newcommand{\pTeXsT}{p\kern-.21em\TeX\kern-.10em s\kern-.21em T}
611
+ % インプレスの新 TeX の仮称
612
+ \newcommand{\iTeX}{\accent'27\i\TeX}
613
+ % 桜井さんの新 TeX のロゴ(仮)
614
+ \newcommand{\MlTeX}{M\kern-.1667em\lower.5ex\hbox{L}\kern-.25em\TeX}
615
+ % \end{macrocode}
616
+ %
617
+ % METAFONTのロゴを出す方法はいろいろあります。まず古い方法で,
618
+ % |manfnt| を使うものです。
619
+ %
620
+ %\begin{verbatim}
621
+ % \font\manual=manfnt
622
+ % \font\manLarge=manfnt scaled \magstep 2
623
+ % \font\manHuge=manfnt scaled \magstep 5
624
+ % \newcommand{\MF}{%
625
+ % \ifx\@currsize\small
626
+ % {\manual hijk}\-{\manual lmnj}% 9pt
627
+ % \else
628
+ % \ifx\@currsize\footnotesize
629
+ % \ifdim \fontdimen\@ne\font>\z@
630
+ % {\manual \char92\char93\char94\char95efg\char94}% 8pt slanted
631
+ % \else
632
+ % {\manual opqr}\-{\manual stuq}% 8pt
633
+ % \fi
634
+ % \else
635
+ % \ifx\@currsize\Large
636
+ % {\manLarge META}\-{\manLarge FONT}% mag2 (14pt)
637
+ % \else
638
+ % \ifx\@currsize\Huge
639
+ % {\manHuge META}\-{\manHuge FONT}% mag5 (25pt)
640
+ % \else % \normalsize
641
+ % \ifdim \fontdimen\@ne\font>\z@
642
+ % {\manual 89:;<=>:}% 10pt slanted
643
+ % \else
644
+ % {\manual META}\-{\manual FONT}% 10pt
645
+ % \fi
646
+ % \fi
647
+ % \fi
648
+ % \fi
649
+ % \fi}
650
+ %\end{verbatim}
651
+ %
652
+ % 次は |logo| を使う方法です。
653
+ %
654
+ %\begin{verbatim}
655
+ %\font\logoTen=logo10
656
+ %\font\logoEight=logo8
657
+ %\font\logoLarge=logo10 scaled \magstep 2
658
+ %\font\logoHuge=logo10 scaled \magstep 5
659
+ %\newcommand{\MF}{%
660
+ % \ifx\@currsize\Large
661
+ % {\logoLarge META}\-{\logoLarge FONT}%
662
+ % \else
663
+ % \ifx\@currsize\Huge
664
+ % {\logoHuge META}\-{\logoHuge FONT}%
665
+ % \else
666
+ % \ifx\@currsize\footnotesize
667
+ % {\logoEight META}\-{\logoEight FONT}%
668
+ % \else
669
+ % {\logoTen META}\-{\logoTen FONT}%
670
+ % \fi
671
+ % \fi
672
+ % \fi}
673
+ %\end{verbatim}
674
+ %
675
+ % \LaTeXe の方法としては,
676
+ % 次のような |ulogo.fd| を作っておきます。
677
+ %
678
+ %\begin{verbatim}
679
+ %\DeclareFontFamily{U}{logo}{}
680
+ %\DeclareFontShape{U}{logo}{m}{n}{%
681
+ % <5><6><7><8>logo8%
682
+ % <9>logo9%
683
+ % <10><10.95><12><14.4><17.28><20.74><24.88>logo10}{}
684
+ %\DeclareFontShape{U}{logo}{m}{sl}{%
685
+ % <5><6><7><8><9>logosl9%
686
+ % <10><10.95><12><14.4><17.28><20.74><24.88>logosl10}{}
687
+ %\DeclareFontShape{U}{logo}{bx}{n}{%
688
+ % <5><6><7><8><9>%
689
+ % <10><10.95><12><14.4><17.28><20.74><24.88>logobf10}{}
690
+ %\DeclareFontShape{U}{logo}{m}{it}
691
+ % {<->ssub*logo/m/sl}{}
692
+ %\end{verbatim}
693
+ %
694
+ % これで次のようにします。
695
+ %
696
+ %\begin{verbatim}
697
+ % \DeclareRobustCommand{\MF}{{\fontfamily{logo}\selectfont META}\-%
698
+ % {\fontfamily{logo}\selectfont FONT}}
699
+ % \DeclareRobustCommand{\MP}{{\fontfamily{logo}\selectfont META}\-%
700
+ % {\fontfamily{logo}\selectfont POST}}
701
+ %\end{verbatim}
702
+ %
703
+ % しかしよく調べてみたら同様なものが |mflogo.sty|,|ulogo.fd|
704
+ % として配布されていましたので,そちらを使うことにします。
705
+ %
706
+ % \section{いろいろな環境}
707
+ %
708
+ % \begin{environment}{dangerous}
709
+ %
710
+ % 参考事項をメモ風に付ける環境です。鉛筆記号を使うようにしました。
711
+ %
712
+ % \begin{macrocode}
713
+ %\newcommand{\dangerouslabel}[1]{{%
714
+ % \setlength{\fboxsep}{1pt}%
715
+ % \fbox{\footnotesize\bfseries #1}}}
716
+ \newenvironment{dangerous}{%
717
+ \vspace{3pt}%
718
+ \begin{list}{\ding{"2E}}{%
719
+ % \let\makelabel=\dangerouslabel
720
+ \setlength{\leftmargin}{3zw}%
721
+ \setlength{\itemindent}{0pt}%
722
+ \setlength{\labelwidth}{2zw}%
723
+ \setlength{\labelsep}{6pt}%
724
+ \setlength{\rightmargin}{0pt}%
725
+ \setlength{\itemsep}{0.5\baselineskip}%
726
+ \setlength{\parsep}{0pt}%
727
+ \setlength{\topsep}{0.5\baselineskip}%
728
+ \setlength{\partopsep}{0pt}%
729
+ \setlength{\listparindent}{0zw}%
730
+ }\small}{\end{list}}
731
+ % \end{macrocode}
732
+ % \end{environment}
733
+ %
734
+ % \begin{environment}{namelist}
735
+ % |\begin{namelist}{xxxx} \item[...] ... \end{namelist}| で
736
+ % 見出しを |xxxx| の幅にしたリストを作ります。
737
+ % \begin{macrocode}
738
+ % \newcommand{\namelistlabel}[1]{{#1}\ \dotfill\ }
739
+ \newcommand{\namelistlabel}[1]{\hspace{1zw}#1\hfil}
740
+ \newenvironment{namelist}[1]{%
741
+ \begin{list}{}{%
742
+ \let\makelabel=\namelistlabel
743
+ \settowidth{\labelwidth}{#1}%
744
+ \addtolength{\labelwidth}{2zw}%
745
+ \setlength{\leftmargin}{\labelwidth}%
746
+ \setlength{\labelsep}{0pt}%
747
+ }}{\end{list}}
748
+ % \end{macrocode}
749
+ % \end{environment}
750
+ %
751
+ % \begin{environment}{mybibliography}
752
+ %
753
+ % |thebibliography| とほぼ同じ参考文献リスト環境ですが,
754
+ % 章(節)見出しを出力せず,カウンタをリセットしません。
755
+ % |thebibliography| と同じ |enumiv| というカウンタを使っていますので,
756
+ % 必要に応じて
757
+ % \begin{quote}
758
+ % |\setcounter{enumiv}{0}|
759
+ % \end{quote}
760
+ % として初期化してください。
761
+ %
762
+ % \begin{macrocode}
763
+ \newenvironment{mybibliography}[1]{%
764
+ \list{\@biblabel{\@arabic\c@enumiv}}%
765
+ {\settowidth\labelwidth{\@biblabel{#1}}%
766
+ \leftmargin\labelwidth
767
+ \advance\leftmargin\labelsep
768
+ \@openbib@code
769
+ \@nmbrlisttrue\def\@listctr{enumiv}%
770
+ \let\p@enumiv\@empty
771
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
772
+ \sloppy
773
+ \clubpenalty4000
774
+ \@clubpenalty\clubpenalty
775
+ \widowpenalty4000%
776
+ \sfcode`\.\@m}
777
+ {\def\@noitemerr
778
+ {\@latex@warning{Empty `mybibliography' environment}}%
779
+ \endlist}
780
+ % \end{macrocode}
781
+ % \end{environment}
782
+ %
783
+ % \begin{environment}{FRAME}
784
+ %
785
+ % 枠です。
786
+ %
787
+ % \begin{macrocode}
788
+ \newenvironment{FRAME}{\begin{trivlist}\item[]
789
+ \hrule width\linewidth
790
+ \hbox to \linewidth\bgroup
791
+ \advance\linewidth by -30pt
792
+ \hsize=\linewidth
793
+ \vrule\hfill
794
+ \vbox\bgroup
795
+ \vskip15pt
796
+ \def\thempfootnote{\arabic{mpfootnote}}% 脚注を算用数字に
797
+ \begin{minipage}{\linewidth}}{%
798
+ \end{minipage}\vskip15pt
799
+ \egroup\hfill\vrule
800
+ \egroup\hrule width\linewidth
801
+ \end{trivlist}}
802
+ \newcommand{\SHUTTEN}[1]{%
803
+ \par\nobreak\removelastskip\rightline{\small#1}\medbreak}
804
+ % \end{macrocode}
805
+ % \end{environment}
806
+ %
807
+ % \begin{environment}{screen}
808
+ %
809
+ % スクリーン風の環境です。元は |ascmac.sty| にあったのだと
810
+ % 思いますが,かなり改変したかもしれません。
811
+ %
812
+ % |\begin{screen}[0.75]| のようにオプションの数値を与えると
813
+ % 横幅を0.75倍するようにしてみました。
814
+ % 倍率が 1 以外の場合は \texttt{graphicx} パッケージが必要です。
815
+ % 画面出力例がコラム幅を超える場合の対処法として有効かもしれません。
816
+ % ただ,screen環境の最初に |[| が来る場合は誤動作しますので,|\relax|
817
+ % か |{}| を入れて誤魔化してください。
818
+ %
819
+ % [2016-07-30] 元になっているp\LaTeX のascmacパッケージ(tascmac.sty)の
820
+ % screen環境は,オプション引数の数値で角の丸みの大きさを整数値(0--8)で指定し
821
+ % ますが,okumacroパッケージでは横の倍率を指定するという違いがあります。
822
+ % 両方のパッケージを読み込む場合は,後に読み込んだほうの定義が勝ちます。
823
+ % screen環境は,okumacroが勝つ場合には横の倍率を指定できる
824
+ % スクリーン風の環境になりますし,ascmacが勝つ場合は角の丸みを指定できる
825
+ % スクリーン風の環境になります。
826
+ %
827
+ % [2016-10-08] 画面出力例がコラム幅を超える場合の対処法として横倍率指定の
828
+ % オプションを追加しましたが,同じ枠内に改行可能な文章も含まれる場合に
829
+ % 枠の右端から離れた不自然な位置(横倍率を縮めない場合に端にあたっていた
830
+ % 位置)で改行していました。これを修正しました。
831
+ %
832
+ % また,新たにokuscreen環境を追加します。これはascmacと干渉せず,常に横の
833
+ % 倍率を指定できるスクリーン風の環境になります。
834
+ %
835
+ % [2018-06-11] 2017/10/04版までは,枠の中身の深さを考慮していなかったので,
836
+ % 表(tabular)や深さのある数式を囲むと枠からはみ出していました。この問題を
837
+ % 修正しましたが,なるべく既存文書のレイアウトが変わらないように,通常の
838
+ % テキストの深さ分だけ引いておきました(|!| と印をつけた部分)。
839
+ %
840
+ % \begin{macrocode}
841
+ \expandafter\ifx\csname ver@tascmac.sty\endcsname\relax
842
+ \newdimen\@scw
843
+ \newbox\scb@x
844
+ \fi
845
+ \newenvironment{okuscreen}[1][1]%
846
+ {\def\screensc@le{#1}\@scw=\linewidth \advance \@scw by -20pt
847
+ \dimen1=#1\p@\relax
848
+ \@tempcnta=\dimen1\relax
849
+ \@tempcntb=65536\relax
850
+ \divide\@scw by \@tempcnta
851
+ \multiply\@scw by \@tempcntb
852
+ \setbox\scb@x=\hbox\bgroup\begin{minipage}[b]{\@scw}}%
853
+ % または \setbox\scb@x=\vbox\bgroup\advance \linewidth by -20pt \relax
854
+ {\end{minipage}\egroup
855
+ \dimen0=\linewidth \removept{\dimen0}{\hsPT}%
856
+ \divide \dimen0 by 2 \removept{\dimen0}{\hhsPT}%
857
+ \dimen0=\dp\scb@x \advance \dimen0 by 5pt
858
+ \advance \dimen0 by -.5\cdp %% !
859
+ \removept{\dimen0}{\hdxPT}%
860
+ \advance \dimen0 by \ht\scb@x \advance \dimen0 by 5pt
861
+ \advance \dimen0 by -.5\cdp %% !
862
+ \removept{\dimen0}{\htxPT}%
863
+ \begin{flushleft}
864
+ \vspace{6.5pt}%
865
+ \begin{picture}(\hsPT,\htxPT)
866
+ \put(\hhsPT,\htxPT){\oval(\hsPT,10)[t]}
867
+ \put(0,0){\line(0,1){\htxPT}}
868
+ \put(\hsPT,0){\line(0,1){\htxPT}}
869
+ \put(\hhsPT,0){\oval(\hsPT,10)[b]}
870
+ \put(10,\hdxPT){\ifdim\screensc@le pt=1pt \box\scb@x
871
+ \else\scalebox{\screensc@le}[1]{\box\scb@x}\fi}
872
+ \end{picture}%
873
+ \end{flushleft}}
874
+ \let\screen\okuscreen \let\endscreen\endokuscreen
875
+ % \end{macrocode}
876
+ % \end{environment}
877
+ %
878
+ % \begin{environment}{EXAMPLE}
879
+ %
880
+ % 出力例です。ずいぶん前に作ったので,再検討の要があります。
881
+ %
882
+ % \begin{macrocode}
883
+ \newdimen\EXAMPLEWIDTH
884
+ \newenvironment{EXAMPLE}{\begin{flushleft}\EXAMPLEWIDTH=\linewidth
885
+ }{\end{flushleft}}
886
+ \newenvironment{IN}{%
887
+ \makebox[35pt][l]{\small\fbox{入力}}%
888
+ \advance \linewidth by -35pt
889
+ \begin{minipage}[t]{\linewidth}}{%
890
+ \end{minipage}\\[6pt]}
891
+ \newenvironment{OUT}{%
892
+ \makebox[35pt][l]{\small\fbox{出力}}%
893
+ \advance \linewidth by -35pt
894
+ \begin{minipage}[t]{\linewidth}}{%
895
+ \end{minipage}}
896
+ \newcommand{\INEX}{\medbreak\noindent
897
+ \framebox[\columnwidth][l]{\small\hskip2zw 入力}\nobreak
898
+ \begin{quote}\small}
899
+ \newcommand{\OUTEX}{\end{quote}
900
+ \framebox[\columnwidth][l]{\small\hskip2zw 出力}\nobreak
901
+ \begin{quotation}\small}
902
+ \newcommand{\ENDEX}{\end{quotation}\bigbreak}
903
+ \newcommand{\ENDEXC}[1]{\end{quotation}\nobreak
904
+ \begin{flushright}\footnotesize#1\end{flushright}\bigbreak}
905
+ % \end{macrocode}
906
+ % \end{environment}
907
+ %
908
+ % \section{雑}
909
+
910
+ % \begin{macro}{\whichpage}
911
+ %
912
+ % |\whichpage{参照名}| で,そのページが同じページにあれば何も出力せず,
913
+ % そうでなければ(次ページ)(前ページ)(123ページ)のような形式で
914
+ % 場所を出力します。
915
+ %
916
+ % \begin{macrocode}
917
+ \def\whichpage#1{%
918
+ \expandafter\ifx\csname r@#1\endcsname\relax
919
+ \else
920
+ \@tempcnta\pageref{#1}\relax
921
+ \advance\@tempcnta-\c@page
922
+ \ifnum\@tempcnta=0
923
+ \else
924
+ \ifnum\@tempcnta=1 (次ページ)
925
+ \else
926
+ \ifnum\@tempcnta=-1 (前ページ)
927
+ \else (\pageref{#1}ページ)
928
+ \fi
929
+ \fi
930
+ \fi
931
+ \fi}
932
+ % \end{macrocode}
933
+ % \end{macro}
934
+ %
935
+ % \begin{environment}{migiake}
936
+ %
937
+ % ごく簡単な右空けコマンドです。使っていません。
938
+ %
939
+ % \begin{macrocode}
940
+ % \newenvironment{migiake}[1]{%
941
+ % \setlength{\rightskip}{#1}\samepage}{\par}
942
+ % \end{macrocode}
943
+ % \end{environment}
944
+ %
945
+ % \begin{macro}{\rightfig}
946
+ %
947
+ % もう少しましな右空けです。
948
+ % |#1| は空け幅, |#2| は行数, |#3| は図や表です。
949
+ %
950
+ % \begin{macrocode}
951
+ % \def\rightfig#1#2#3{\noindent
952
+ % \dimen0=\baselineskip \multiply \dimen0 by #2
953
+ % \advance\dimen0 by -\baselineskip \advance\dimen0 by 2ex
954
+ % \hangindent=-#1 \hangafter=-#2
955
+ % \raise 2ex \hbox to 0pt{\smash{\vtop to \dimen0{\vfil
956
+ % \vbox{\hfill \hbox to #1{ \ \hfill #3}}\vfil
957
+ % }}\hss}\hskip\parindent\ignorespaces}
958
+ % \end{macrocode}
959
+ % \end{macro}
960
+ %
961
+ % 漢字の幅をttフォント2文字分にします。使っていません。
962
+ %
963
+ % \begin{macrocode}
964
+ % \newcommand{\kanjitt}[1]{\texttt{\kanjiskip0.083595em\relax#1}}
965
+ % \end{macrocode}
966
+ %
967
+ % \begin{environment}{shadebox}
968
+ %
969
+ % 影付きの箱です。|ascmac.sty| から取りました。
970
+ %
971
+ % [2016-07-30] 元になっているp\LaTeX のascmacパッケージ(tascmac.sty)と
972
+ % 衝突しないように,新しい仕様では,ascmacとokumacroの両方を読み込む場合には
973
+ % 「後に読み込んだほう」が勝ちます。
974
+ %
975
+ % また,新たにokushadebox環境を追加します。これはascmacと干渉せず,常に
976
+ % okumacro流の定義になります。
977
+ %
978
+ % \begin{macrocode}
979
+ \expandafter\ifx\csname ver@tascmac.sty\endcsname\relax
980
+ \newdimen\shaderule \shaderule 5\p@
981
+ \fi
982
+ \def\okushadebox{\dimen0\linewidth \advance\dimen0-20\p@
983
+ \advance\dimen0-2\fboxrule \advance\dimen0-\shaderule
984
+ \setbox\@tempboxa=\hbox\bgroup\minipage{\dimen0}}
985
+ \def\endokushadebox{\endminipage\egroup\dimen0=10\p@ \advance\dimen0-\fboxrule
986
+ \setbox\@tempboxa=\hbox{\kern\dimen0\unhbox\@tempboxa\kern\dimen0}%
987
+ \setbox0=\vbox{\hrule\@height \fboxrule
988
+ \hbox{\vrule\@width \fboxrule \hskip-\fboxrule
989
+ \vbox{\vskip\fboxsep \box\@tempboxa\vskip\fboxsep}%
990
+ \hskip-\fboxrule\vrule \@width \fboxrule}\hrule \@height \fboxrule}%
991
+ \dimen0=\ht0 \advance\dimen0-\shaderule
992
+ \hbox{\hbox to \shaderule{\copy0\hss}\kern \z@
993
+ \vrule\@width\wd0\@height\z@\@depth\shaderule\hskip-\shaderule
994
+ \vrule\@width\shaderule\@height\dimen0}}
995
+ \let\shadebox\okushadebox \let\endshadebox\endokushadebox
996
+ % \end{macrocode}
997
+ % \end{environment}
998
+ %
999
+ % \begin{environment}{sankou}
1000
+ %
1001
+ % 参考(dangerous bend 風)の環境です。
1002
+ %
1003
+ % \begin{macrocode}
1004
+ \def\sankoumark{{\small ★}}
1005
+ \newenvironment{sankou}{\vspace{3pt}%
1006
+ \begin{list}{}{%
1007
+ \setlength{\leftmargin}{3zw}%
1008
+ \setlength{\itemindent}{0pt}%
1009
+ \setlength{\labelwidth}{2zw}%
1010
+ \setlength{\labelsep}{6pt}%
1011
+ \setlength{\rightmargin}{0pt}%
1012
+ \setlength{\itemsep}{0pt}%
1013
+ \setlength{\parsep}{0pt}%
1014
+ \setlength{\topsep}{0.5\baselineskip}%
1015
+ \setlength{\partopsep}{0pt}%
1016
+ \setlength{\listparindent}{0zw}%
1017
+ }\item[\sankoumark]\small}{\end{list}}
1018
+ % \end{macrocode}
1019
+ % \end{environment}
1020
+ %
1021
+ % \begin{environment}{toi}
1022
+ %
1023
+ % 問いの環境です。
1024
+ %
1025
+ % \begin{macrocode}
1026
+ \def\toimark{{\small\bf 【問】}}
1027
+ \newenvironment{toi}{\vspace{3pt}%
1028
+ \begin{list}{}{%
1029
+ \setlength{\leftmargin}{3zw}%
1030
+ \setlength{\itemindent}{0pt}%
1031
+ \setlength{\labelwidth}{2zw}%
1032
+ \setlength{\labelsep}{6pt}%
1033
+ \setlength{\rightmargin}{0pt}%
1034
+ \setlength{\itemsep}{0pt}%
1035
+ \setlength{\parsep}{3pt plus 1pt minus 1pt}%
1036
+ \setlength{\topsep}{3pt plus 1pt minus 1pt}%
1037
+ \setlength{\partopsep}{3pt plus 6pt minus 1pt}%
1038
+ \setlength{\listparindent}{0zw}%
1039
+ }\item[\toimark]\small}{\end{list}}
1040
+ % \end{macrocode}
1041
+ % \end{environment}
1042
+ %
1043
+ % 英語用の行送りに切り替えるコマンドですが,使っていません。
1044
+ %
1045
+ % \begin{macrocode}
1046
+ % \def\english{%
1047
+ % \ifx\@currsize\normalsize \fontsize{10}{12pt}\selectfont\else
1048
+ % \ifx\@currsize\small \fontsize{9}{11pt}\selectfont\else
1049
+ % \ifx\@currsize\footnotesize \fontsize{8}{9.5pt}\selectfont\fi\fi\fi}
1050
+ % \end{macrocode}
1051
+ %
1052
+ % \begin{macrocode}
1053
+ % \newcommand{\shima}{dvi\-out\slash dvi\-prt\index{dviout/dviprt}}
1054
+ \providecommand{\eps}{\varepsilon}
1055
+ % \newcommand{\zip}{〒\kern0pt\relax}
1056
+ % \def\mathpalette#1#2{\mathchoice{#1\displaystyle{#2}}%
1057
+ % {#1\textstyle{#2}}{#1\scriptstyle{#2}}{#1\scriptscriptstyle{#2}}}
1058
+ % ≦, ≧,=の上下に点
1059
+ \def\LEQQ{\mathrel{\mathpalette\gl@align<}}
1060
+ \def\GEQQ{\mathrel{\mathpalette\gl@align>}}
1061
+ \def\gl@align#1#2{\lower.6ex\vbox{\baselineskip\z@skip\lineskip\z@
1062
+ \ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}
1063
+ \def\APPROX{\mathrel{\mathpalette\ap@align{\smash.}}}
1064
+ \def\ap@align#1#2{\lower.2ex\vbox{\baselineskip\z@skip\lineskip\z@
1065
+ \def\finsm@sh{\ht\z@.2ex \dp\z@.2ex \box\z@}%
1066
+ \ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr#2\crcr}}}
1067
+ %%% Fractions like 1/2 by DEK (TUGboat, 6(1):36, TeXbook (Excercise 11.6))
1068
+ \def\FRAC#1#2{\leavevmode\kern.1em
1069
+ \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
1070
+ /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
1071
+ \newcommand{\hk}{\hspace{\kanjiskip}}
1072
+ \newcommand{\hx}{\hspace{\xkanjiskip}}
1073
+ \newcommand{\3}{\penalty300 }
1074
+ \newcommand{\5}{\penalty50 } % \penalty\exhyphenpenalty
1075
+ % \end{macrocode}
1076
+ %
1077
+ % \begin{macro}{\>}
1078
+ % 全角コンマの直後に半角文字が来た場合,全角コンマの後に挿入して,
1079
+ % 半角空白と同じだけの伸縮を持たせるためのグルー挿入コマンドです。
1080
+ % 使っていません。
1081
+ % \begin{macrocode}
1082
+ % \newcommand{\>}{\relax
1083
+ % \ifmmode\mskip\medmuskip\else\hskip0em plus0.167em minus0.111em\fi}
1084
+ % \end{macrocode}
1085
+ % \end{macro}
1086
+ %
1087
+ % \begin{macro}{\ANGLE}
1088
+ % Angle brackets です。
1089
+ % \begin{macrocode}
1090
+ \newcommand{\ANGLE}[1]{%
1091
+ $\langle$\kern0pt\nobreak{#1}\kern0pt\nobreak$\rangle$}
1092
+ % \end{macrocode}
1093
+ % \end{macro}
1094
+ %
1095
+ % 分数関係です。\texttt{amstex} パッケージでもほぼ同じものが
1096
+ % 定義されていますが,\texttt{amstex} パッケージの |\cfrac| で
1097
+ % は |\mathstrut| ではなく |\strut| が使われているため,
1098
+ % 和文スタイルで行送りが大きい場合には,ちょっと間延びしてしまいます。
1099
+ % \begin{macrocode}
1100
+ % \providecommand{\tfrac}[2]{{\textstyle\frac{#1}{#2}}}
1101
+ % \providecommand{\dfrac}[2]{{\displaystyle\frac{#1}{#2}}}
1102
+ % \providecommand{\cfrac}[2]{\dfrac{\mathstrut #1}{#2}}
1103
+ % \end{macrocode}
1104
+ %
1105
+ % \begin{macro}{\dalembert}
1106
+ % D'Alembertian(|\Box| より少々大きい四角)です。
1107
+ % \begin{macrocode}
1108
+ % \newcommand{\dalembert}{{%
1109
+ % \setlength{\unitlength}{0.1em}%
1110
+ % \begin{picture}(8,8)
1111
+ % \thinlines
1112
+ % \put(1,0){\framebox(6,6){}}
1113
+ % \end{picture}}}
1114
+ % \end{macrocode}
1115
+ % \end{macro}
1116
+ %
1117
+ % \begin{macro}{\kanjibox}
1118
+ % 漢字の大きさの箱です。使っていません。
1119
+ % \begin{macrocode}
1120
+ % \newcommand{\kanjibox}{{\setlength{\unitlength}{0.1091175zw}%
1121
+ % \begin{picture}(9.62216,7.77588)\thinlines
1122
+ % \put(0,-1.38855){\framebox(9.16443,9.16443){}}\end{picture}}}
1123
+ % \end{macrocode}
1124
+ % \end{macro}
1125
+ %
1126
+ % Poor person's blackboard boldです
1127
+ % \footnote{Robert Messer, ``Blackboard Bold.''
1128
+ % \textit{TUGboat} 9(1):19--20, 1988.}。
1129
+ %
1130
+ % \begin{macro}{\R}
1131
+ % \begin{macro}{\C}
1132
+ % \begin{macrocode}
1133
+ % \def\R{{\rm I\kern-.17em R}} % (-.25em in the above literature)
1134
+ % \def\C{{\rm\kern.24em\vrule width.02em height1.4ex depth-.05ex\kern-.26em C}}
1135
+ % \end{macrocode}
1136
+ % \end{macro}
1137
+ % \end{macro}
1138
+ %
1139
+ % \begin{macro}{\株}
1140
+ % \begin{macrocode}
1141
+ \newcommand{\株}{\hspace{\kanjiskip}\<(株)\<\hspace{\kanjiskip}}
1142
+ % \end{macrocode}
1143
+ % \end{macro}
1144
+ %
1145
+ % \begin{macro}{\CVS}
1146
+ %
1147
+ % CVS用。
1148
+ %
1149
+ % \begin{macrocode}
1150
+ % \def\CVS$#1: #2 ${\expandafter\def\csname CVS#1\endcsname{#2}}
1151
+ % \end{macrocode}
1152
+ % \end{macro}
1153
+ %
1154
+ %\begin{verbatim}
1155
+ % \CVS$Revision: 1.7 $
1156
+ % \CVS$Date: 2000/06/09 05:55:02 $
1157
+ % この文書のバージョンは\CVSRevision 版である。
1158
+ %\end{verbatim}
1159
+ % のように使います。
1160
+ %
1161
+ % [2003-02-16..17] |js*| クラスで数式の前後のスペースが若干変わってしまいます。
1162
+ % とりあえず |amsmath| の |equation(*)|,|align(*)| 環境の類だけここで直しておきます。
1163
+ % このあたりはまた見直します。
1164
+ %
1165
+ % \begin{macrocode}
1166
+ \@ifundefined{widebaselines}{}{%
1167
+ \let\endmathdisplaysave=\endmathdisplay
1168
+ \def\endmathdisplay{\widebaselines\endmathdisplaysave}}
1169
+ \let\start@alignsave=\start@align
1170
+ \def\start@align{\vspace{4pt}\start@alignsave}
1171
+ % \end{macrocode}
1172
+ %
1173
+ % 以上で終わりです。
1174
+ %
1175
+ % \begin{macrocode}
1176
+ %</okumacro>
1177
+ \endinput
1178
+ % \end{macrocode}
1179
+ %
1180
+ % ^^A \endinput の後に \CharacterTable を書いておけば,子ファイルには
1181
+ % ^^A 出力されません。チェックは *.dtx を処理したときにしてくれます。
1182
+ % ^^A [2016-09-03] →削除しました。
1183
+ %
1184
+ % \Finale