Acetaminophen’s diary

化学に関すること,TeXに関すること,ゆきだるまに関すること。

存在するはずの LaTeX パッケージのオプションがなぜか未定義?

この記事は、サブブログの 2016-09-15 投稿記事を移転してきたものです。

早速ですが…

さて、問題です

以下の LaTeX ソースを処理してみる*1

\begin{filecontents}{test.sty}
\DeclareOption{TEST}{\typeout{*** TEST OPTION ***}}
\ProcessOptions
\AtEndOfPackage{\RequirePackage{xspace}} % !!!
\end{filecontents}
\documentclass{article}
\usepackage[TEST]{test}
\begin{document}
\end{document}

この !!! を付けた行で呼び出すパッケージによって、これがエラーになったりエラーにならなかったりする。エラーというのは

! LaTeX Error: Unknown option `TEST' for package `test'.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.8 \begin
          {document}
? 

というもの。LaTeX の required に含まれるパッケージ群 (graphics, tools) の中で、適当に試してみると、以下は OK なもの:

  • longtable
  • multicol
  • varioref
  • color
  • graphicx

以下は NG なもの:

  • alltt
  • array
  • enumerate
  • ftnright
  • hhline
  • somedefs
  • theorem
  • xspace

この違いはなんでしょう?

 

*1:簡略化のため filecontents 環境を使っているが、これは「環境内の命令を test.sty というファイルに保存して同じディレクトリに置く」というのと同じである。

続きを読む