よくある質問

このページでは,TeX Forum で話題になった,あるいは頻繁に尋ねられる事柄をまとめます.



「美文書作成入門」付録の DVD-ROM からの TeX システムのインストールについて

インストールが失敗するなどの問題が起こる場合は,まずサポートページを見ましょう

TeXworks などの統合環境でタイプセットをすると,“! LaTeX Error: This file needs format `pLaTeX2e' but this is `LaTeX2e'.” となって日本語が出ない

これは jsarticle などの (u)pLaTeX 専用のクラスファイルで作成したソースを (u)platex 以外で処理しようとすると出るエラーです. 大抵の場合,お使いの統合環境のデフォルト設定で pdflatex(日本語非対応)を使うようになっていることが原因です. (u)platex を使う設定を追加する必要があります.

例えば,TeXworks での設定方法は TeXworks/設定 にあります. なお,TeX Live 2016 以降や「[改訂第8版]LaTeX2e美文書作成入門」の付録 DVD-ROM に収録されている TeXworks ではこの設定は既になされているので,「タイプセットの方法」として「pLaTeX (ptex2pdf)」が選択されていれば正しく動くはずです.

ただし,インストール時のトラブルにより「pLaTeX (ptex2pdf)」が設定されていないことがあります. その際は TeXworks/設定 の内容に従い,自分で改めて設定してください. (「Windows のユーザ名が日本語などの全角文字を含む場合」にこのようなエラーが発生することが知られています.)

upLaTeX で “! LaTeX Error: Encoding scheme `JY1' unknown.” と出る

upLaTeX では jarticle などの pLaTeX 標準のクラスファイルは使えません.代わりに接頭辞 u をつけたクラスファイル(ujarticle など)を使って下さい.

もしくは,統合環境で意図せず upLaTeX を使う設定に変更してしまった場合は,pLaTeX を使うように戻してください.

upLaTeX で “! Class jsarticle Error: You are running upLaTeX.” と出る

jsarticle などはそのままでは upLaTeX で使うことができません.続いて出ている

(jsarticle)              Please use pLaTeX instead, or add 'uplatex' to
(jsarticle)              the class option list.

という指示に従って,クラスオプションに uplatex を追加して下さい.

\documentclass[uplatex]{jsarticle}

“dvipdfmx:fatal: Unable to open "xxx.pdf".” と出て PDF ファイルが出力されない

これは出力しようとしている PDF ファイルへの書き込みができないときに dvipdfmx が表示するエラーです. “Output file removed.” とも表示されますが,実際には削除されません(削除もできないので).

最も多い原因は,出力しようとしている PDF ファイルを Adobe Acrobat で開いたまま dvipdfmx を実行しているというものです. Windows 版の Acrobat は開いているファイルをロックして書き込みできなくしてしまうため,上のようなエラーが出ることになります. Acrobat を終了してからもう一度試してみれば,問題なく出力できることでしょう.

このように,PDF の出力結果を見ながら LaTeX の原稿を編集するには Acrobat は向いていないので,代わりに SumatraPDF, Evince, Okular, TeXworks, TeXstudio など,ロックしないビューワを用いるのがおすすめです.

jsarticle で papersize オプションを指定すると “! Package keyval Error: No value specified for papersize.” と出る

例えば,jsarticle で用紙サイズを B5 にし,かつ余白を2cmずつとりたいとします.dvipdfmx で PDF を出力するときに用紙サイズ設定を自動で反映させるためにはクラスオプションに papersize をつければよく,また余白の設定をするには geometry パッケージを使うのが手軽なので,次のような記述を冒頭にすればよいのでは,ということになります.

\documentclass[b5paper,papersize]{jsarticle}
\usepackage[margin=2cm]{geometry}
...

ところが,実際にこのように記述すると,

! Package keyval Error: No value specified for papersize.

というエラーが出ます.keyval パッケージなんて使っていないのに,一体何が起こっているのだ! となるわけです.これは geometry パッケージも papersize={<width>,<height>} という(keyval パッケージを用いて定義された)オプションを持っており,\documentclass で指定したオプションがグローバルオプションとして geometry にも値なしで渡されてしまうためにエラーとなっているのです.一つの解決策は,geometry にも papersize と同様の機能が備わっていることを利用して,用紙サイズの設定も geometry で行ってしまうことです.

\documentclass{jsarticle}
\usepackage[b5j,margin=2cm]{geometry}
...

ところで,「グローバルオプションで geometry にも b5paper が渡されるのだから,単に papersize オプションを外すだけでよいのではないか」と思われるかもしれません. 確かに a5paper などの場合はそれでよいのですが,b5paper の場合には落とし穴があります. (次の項目に続く)

geometry パッケージによる用紙サイズや余白の設定が意図通りにならない

よく陥りがちな罠について書いておきます.

\documentclass[11pt]{jsarticle}
\usepackage[b5j,truedimen,margin=2truecm]{geometry}
...

次も参考にしてください.

注意:文書作成時に「余白を25mmに」などという指定があることは多いですが,和文組版の観点からいうとこれはあまり良い指定ではありません. 実際に余白を25mmと設定してみると,(用紙サイズ・文字サイズにもよりますが)和文文字だけで構成される段落を縦に見たときに最後の行の文字の位置が他の行の文字の位置と揃わないことに気付くはずです. これは,最後の行以外では指定した余白となるように文字間隔を広げて組まれてしまうためです. きれいなベタ組みとなるように余白を指定に近い値に設定するためには,本文の幅が和文文字サイズの整数倍となるように計算する必要があります. geometry パッケージには本文の幅と行数からレイアウトを設定するためのオプションも用意されているので,これを用いればそのような設定を自分で計算することなく簡易的に実現することができます.

\usepackage[textwidth=49zw,lines=44,centering]{geometry}

zw は zenkaku width で和文文字1文字の幅を表します. centering を指定すると版面が中央になるように余白が設定されます.

TeX Live の (u)pLaTeX + dvipdfmx で画像が取り込めない

まず,

! LaTeX Error: Cannot determine size of graphic in xxx.pdf (no BoundingBox).

などとエラーメッセージが出る場合は,プリアンブルの graphicx のパッケージ読み込みで

\usepackage[dvipdfmx]{graphicx}

と dvipdfmx オプションがついていることを確認して下さい. もしくはグローバルオプションに dvipdfmx でもよいです:

\documentclass[...,dvipdfmx,...]{jsarticle}

この状態で画像を取り込もうとしても,

runpopen command not allowed: extractbb
! LaTeX Error: Cannot run pipe command. Try --shell-escape
(--enable-pipes in MikTeX) option.

と出てうまくいかないことがあります.これは画像に対応する「枠」(Bounding Box) の情報を取得・出力するためのコマンド extractbb が実行できないからです.texmf.cnf に

shell_escape_commands = \
bibtex,bibtex8,\
extractbb,\
gregorio,\
kpsewhich,\
makeindex,\
repstopdf,\
r-mpost,\
texosquery-jre8,\

と記述すると,extractbb が自動で実行され,画像が取り込めるようになります.なお,この設定は TeX Live 2015 以降では不要になりました.

欧文誌の論文投稿システムで生成した原稿の PDF に図が正しく表示されない

これは執筆時に (u)platex + dvipdfmx を用いている場合に起こります. 日本では未だに pTeX を使っているために出力の DVI ファイルを dvipdfmx で PDF に変換するのが主流ですが,海外では pdfTeX というもので直接 PDF を出力するのが主流になっています. dvipdfmx で図を取り込むためには graphicx パッケージに dvipdfmx オプションを与えることになりますが,この指定のまま pdflatex で処理すると図が取り込めなくなってしまいます. 投稿時に dvipdfmx オプションを外すか,欧文論文の執筆時には pdflatex を使うようにしてください.

PDF を取り込んだファイルのタイプセット時に “** WARNING ** Streams with DecodeParams not supported.”というアラートが出て PDF を取りこめない

TeX Live 2015 以降では修正されています. 古いシステムを使用していたり [改訂第6版] LaTeX2e 美文書作成入門 からインストールしている場合に,このエラーが生じる可能性があります.

原因は,一部の PDF と 以前の dvipdfmx / extractbb に互換性がないことです.

対策は,PDF を作り直して DecodeParams を含まない PDF を作るか,最新の TeX システムをインストールしてください.

DecodeParams を含まない PDF を作るには,以下のどれかを試してください.

eqnarray で複数行の数式を書くと,位置を揃えた等号の後ろに妙なスペースが入る

これはよく知られた問題で,まともな解決策はありません. \arraycolsep というパラメータを調節することでスペースを小さくできますが,行列などの array 環境にまで影響してしまいます.

代替として,amsmath パッケージが提供する align 環境を使うことが推奨されています.使い方は eqnarray とほぼ同じですが,位置を揃えるための & は揃える文字の前のみでよく,後ろの & は不要です.

\begin{eqnarray}
a&=&b \\
 &=&c
\end{eqnarray}
\begin{align}
a&=b \\
 &=c
\end{align}

align や multline の複数行の数式を囲む括弧で \left( ... \\ ... \right) とするとエラーが出る

このような場合には残念ながら \left, \right は使えません. \biggl, \biggr などを使って手動で括弧の大きさを指定するか,\vphantom を活用します.

“LaTeX Font Warning: Font shape `JY1/mc/m/it' undefined” といった警告が出る

これは it(イタリック体)で使用する和文フォントが指定されていないときに出る警告です.そのあとの

using `JY1/mc/m/n' instead on input line xx

は,代わりに n(立体)のフォントを用いることを意味しています.

これらの警告は,自分の意図通りの出力が得られているならば特に気にする必要はありません.どうしても気になる,警告を消したいという場合は jsclasses と同様の代替フォント設定をプリアンブルに書くとよいでしょう.uplatex の場合は JY1, JT1 をそれぞれ JY2, JT2 に置き換えてください.

\DeclareFontShape{JY1}{mc}{m}{it}{<->ssub*mc/m/n}{}
\DeclareFontShape{JY1}{mc}{m}{sl}{<->ssub*mc/m/n}{}
\DeclareFontShape{JY1}{mc}{m}{sc}{<->ssub*mc/m/n}{}
\DeclareFontShape{JY1}{gt}{m}{it}{<->ssub*gt/m/n}{}
\DeclareFontShape{JY1}{gt}{m}{sl}{<->ssub*gt/m/n}{}
\DeclareFontShape{JY1}{mc}{bx}{it}{<->ssub*gt/m/n}{}
\DeclareFontShape{JY1}{mc}{bx}{sl}{<->ssub*gt/m/n}{}
\DeclareFontShape{JT1}{mc}{m}{it}{<->ssub*mc/m/n}{}
\DeclareFontShape{JT1}{mc}{m}{sl}{<->ssub*mc/m/n}{}
\DeclareFontShape{JT1}{mc}{m}{sc}{<->ssub*mc/m/n}{}
\DeclareFontShape{JT1}{gt}{m}{it}{<->ssub*gt/m/n}{}
\DeclareFontShape{JT1}{gt}{m}{sl}{<->ssub*gt/m/n}{}
\DeclareFontShape{JT1}{mc}{bx}{it}{<->ssub*gt/m/n}{}
\DeclareFontShape{JT1}{mc}{bx}{sl}{<->ssub*gt/m/n}{}

例えば,一番上の設定は「横組 (JY1) の明朝体 (mc) の Medium (m) のイタリック体 (it) は明朝体 (mc) の Medium (m) の立体 (n) で代替する (ssub)」という意味になります.他にpLaTeX 固有のものとして,JT1 は縦組,gt はゴシック体を表しています.これらフォント設定について,より詳しく知りたい場合は Documentation of LaTeX font commands を読んでください.

\bf と \bfseries の違い

\bf, \it といった2文字のフォント指定コマンドを使っている方は多いと思いますが,実はこれらは古い LaTeX 2.09 のコマンドで,既に現行の LaTeX2e では非推奨となっています. LaTeX2e では \bfseries, \itshape などを使います.

\bf, \it が非推奨な理由は,次を試すとわかるでしょう.

{\bf\it foo}\\
{\bfseries\itshape foo}\\
\textbf{\textit{foo}}

このように書くとボールドイタリック(太字の斜体)で foo が出力されるのが自然ですが,下2つは意図通りになるのに対して,1番上のはただのイタリックで,\bf の効果は打ち消されてしまっていることがわかります.

実は,LaTeX2e では \bf などは非推奨どころか既に定義すらされておらず,実際に minimal クラスで \bf を使ってみると ! Undefined control sequence. が出ます.これにも関わらず,多くのクラスファイルではわざわざ \bf を定義しているので使えるようになっています.

scrartcl というクラスでは,\bf を使うと次の長いヘルプメッセージが出ます.

! Class scrartcl Error: undefined old font command `\bf'.

See the scrartcl class documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.5 \bf
       
? H
H
You should note that since 1994 LaTeX2e provides a new font selection scheme
called NFSS2 with several new, combinable font commands. KOMA-Script
classes had defined the old font commands like `\bf' only for compatibility
with old LaTeX 2.09 document styles of Script 2.0. Nevertheless, these
commands are deprecated and undocumented at least since 2003. Since 2013
KOMA-Script classes warned about soon removement of these deprecated commands.
Now, after two decades of LaTeX2e and NFSS2, these commands will not work any
more. If loading a package results in this error message, you should contact
the author of that package and ask him to replace the deprecated font command
`\bf', e.g., by `\normalfont \bfseries `. Otherwise you should reconfigure
or replace the package. If you have used the old font command `\bf' yourself,
you should replace it, e.g., by `\normalfont \bfseries '.
To make it work for now, you can use the already also deprecated class option
`enabledeprecatedfontcommands'.

なお,紛らわしいですが,強調のための \em は LaTeX2e のコマンドなので問題なく使用することができます.

行番号を振りたい

lineno パッケージが使えます.

ヘルプドキュメントの探し方

(qa:53707, qa:53708, qa:55521 など)

TeX, LaTeX のエラーメッセージ

TeX のエンジンレベルのエラーについては TeX のエラーメッセージにまとめてあります.

LaTeX のエラー・警告については

の各々にまとめてあります.エラーや警告は生じないが,深刻な問題があるものについては

が参考になります.

dviout や xdvi でのトラブル

TeX の出力である DVI ファイルをそのままプレビューすることは,現在ではあまり行われていません. ptex2pdf を使用すれば TeX ファイルから直接 PDF ファイルを出力できるので,PDF での作業への移行を検討してください.

複数ページの PDF ファイルの任意のページを取り込みたい

pdfTeXLuaTeX のような PDF ファイルを直接扱えるエンジンでは,単に

\includegraphics[page=3]{sample.pdf}

のように page オプションでどのページを取り込むかを指定すればよいです. (u)pLaTeX + dvipdfmx の場合には,TeX Live 2014 以前では extractbb によるバウンディングボックスの取得が,取り込み対象の PDF の2ページ目以降には対応していないという問題がありました.

この問題は,TeX Live 2015 以降では解決されており,上記のように page オプションで指定するだけで取り込めるようになっています. 詳細は次のページを参照して下さい.

細かい表記に関すること

表記の哲学にまとめてあります.

Tips


Last-modified: 2022-10-22 (土) 16:33:51 (544d)