Skip to content

Commit 72f9397

Browse files
committed
update ja/{lesson,more}-15.md
1 parent 33a0c5c commit 72f9397

2 files changed

Lines changed: 33 additions & 32 deletions

File tree

ja/lesson-15.md

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,43 @@
22
layout: "lesson"
33
lang: "ja"
44
title: "エラーへの対処"
5-
description: "このレッスンでは LaTeX による文書作成でよくあるエラーを紹介します。各エラーがどのような意味で、どうすれば改善できるのかを示します。"
5+
description: "このレッスンではLaTeXによる文書作成でよくあるエラーを紹介します。各エラーがどのような意味で、どうすれば改善できるのかを示します。"
66
toc-anchor-text: "エラーへの対処"
77
toc-description: "期待通りの挙動でないときは"
88
---
99

1010
# エラーへの対処
1111

12-
<span class="summary">このレッスンでは LaTeX による文書作成でよくあるエラーを紹介します。各エラーがどのような意味で、どうすれば改善できるのかを示します。</span>
12+
<span class="summary">このレッスンではLaTeXによる文書作成でよくあるエラーを紹介します。各エラーがどのような意味で、どうすれば改善できるのかを示します。</span>
1313

14-
典型的なワープロソフトと異なり、LaTeX には編集・実行・確認のサイクルがあり、プログラミング言語のコンパイラを使った作業に似ています。そして、プログラミングの場合と同様に、入力の中に間違いが含まれていて、システムが報告するエラーメッセージを解読しなければならない場合があります。
14+
典型的なワープロソフトと異なり、LaTeXには編集・実行・確認のサイクルがあり、プログラミング言語のコンパイラを使った作業に似ています。そして、プログラミングの場合と同様に、入力の中に間違いが含まれていて、システムが報告するエラーメッセージを解読しなければならない場合があります。
1515

1616
## よくあるエラー
1717

1818
ここからいくつかの一般的なエラーを紹介していきます。各エラー例ではエラーメッセージの見た目に関することについても解説します。
1919

2020
実際にエラーとなるコード例を試してみるだけでも勉強になるかと思いますが、さらに編集機能を利用して問題箇所を修正し、ご自身の手でエラーを解決できるか試してみるといいでしょう。
2121

22-
### pdflatex コマンドが見つからない
22+
### pdflatexコマンドが見つからない
2323

24-
これは LaTeX 初心者が陥りやすい典型的なエラーです。Windows の場合、次のようなメッセージが現れます:
24+
これはLaTeX初心者が陥りやすい典型的なエラーです。Windowsの場合、次のようなメッセージが現れます:
2525

2626
```
2727
'pdflatex' is not recognized as an internal or external command,
2828
operable program or batch file.
2929
```
3030
{: .noedit :}
3131

32-
Linux などの場合は次のようなメッセージが見られるでしょう
32+
Linuxなどの場合は次のようなメッセージが見られるでしょう
3333

3434
```
3535
bash: pdflatex: command not found
3636
```
3737
{: .noedit :}
3838

39-
これらは厳密には TeX のエラーではなく、TeX がインストールされていない(あるいは見つからない)というオペレーティングシステムのエラーです。よくある間違いは、TeXworks や TeXShop などの**エディタ**だけをインストールしていて、TeX Live や MiKTeX といった TeX システムをインストールしていないというものです
39+
これらは厳密にはTeXのエラーではなく、TeXがインストールされていない(あるいは見つからない)というオペレーティングシステムのエラーです。よくある間違いは、TeXworksやTeXShopなどの**エディタ**だけをインストールしていて、TeX LiveやMiKTeXといったTeXシステムをインストールしていないというものです
4040

41-
### TeX エラーメッセージの解剖学
41+
### TeXエラーメッセージの解剖学
4242

4343
```latex
4444
\documentclass{jsarticle}
@@ -47,7 +47,7 @@ bash: pdflatex: command not found
4747
4848
\begin{document}
4949
50-
コマンドを使ってみます:\mycommand.
50+
コマンドを使ってみます:\mycommand
5151
5252
\end{document}
5353
```
@@ -57,21 +57,21 @@ bash: pdflatex: command not found
5757
```
5858
! Undefined control sequence.
5959
\mycommand ->\textbold
60-
{hmmm}
60+
{むむむ}
6161
l.7 My command is used here \mycommand
6262
.
6363
?
6464
```
6565
{: .noedit :}
6666

67-
* `!` から始まる1行目は、エラーの一般的な性質を述べています(この例では未定義のコマンドがあると言っています)
68-
* 続く2行は TeX が処理していたソース箇所を示しています。ここで改行位置は TeX が到達した地点を表しています。つまり改行位置直前の `\textbold` こそが未定義のコマンドであるということがわかります。改行後の `{ムムム}` は、本来コマンドの引数として読まれるべきだったものですが、まだ TeX によって処理されていません
67+
* `!`から始まる1行目は、エラーの一般的な性質を述べています(この例では未定義のコマンドがあると言っています)
68+
* 続く2行はTeXが処理していたソース箇所を示しています。ここで改行位置は TeX が到達した地点を表しています。つまり改行位置直前の`\textbold`こそが未定義のコマンドであるということがわかります。改行後の`{むむむ}`は、本来コマンドの引数として読まれるべきだったものですが、まだTeXによって処理されていません
6969
* この後にさらにエラーが発生した文脈について追加の説明が表示される場合もあります。
70-
* `l.〈行番号〉` から始まる行はソースファイルにおいてエラーが特定された位置を示しています。
70+
* `l.〈行番号〉`から始まる行はソースファイルにおいてエラーが特定された位置を示しています。
7171

72-
* 最後の行は単体の `?` です。TeX を対話的に使用している場合はここで TeX への指示を入力することができるのですが、ほとんどのエディタやオンラインシステムは TeX を対話的に実行するのではなく、エラーがあっても TeX を停止させることなく一旦は文書全体を処理させようと試みます。その上で、改めてエラー発生箇所のメッセージを表示させている場合が多いです。もし TeX を対話的に実行している場合は `s` と入力することにより、TeX にひとまず最後まで文書を処理するように指示することができます
72+
* 最後の行は単体の`?`です。TeXを対話的に使用している場合はここでTeXへの指示を入力することができるのですが、ほとんどのエディタやオンラインシステムはTeXを対話的に実行するのではなく、エラーがあってもTeXを停止させることなく一旦は文書全体を処理させようと試みます。その上で、改めてエラー発生箇所のメッセージを表示させている場合が多いです。もしTeXを対話的に実行している場合は`s`と入力することにより、TeXにひとまず最後まで文書を処理するように指示することができます
7373

74-
ここで注目すべき点は、TeX はコマンドを定義したところでエラーを起こしているわけではないことです。実際、`\mycommand` を定義しても、そのコマンドを使用しなかった場合、エラーは発生しません。この例ではエラーが8行目にあると報告されているにも関わらず、「本当の」エラーは4行目のコマンド定義の中にあります。したがって、エラーメッセージ全体を視ることが重要です。
74+
ここで注目すべき点は、TeXはコマンドを定義したところでエラーを起こしているわけではないことです。実際、`\mycommand`を定義しても、そのコマンドを使用しなかった場合、エラーは発生しません。この例ではエラーが8行目にあると報告されているにも関わらず、「本当の」エラーは4行目のコマンド定義の中にあります。したがって、エラーメッセージ全体を視ることが重要です。
7575

7676
エディタによってはエラーログの「概要」のみを表示するものもあります。このようなエディタでは、場合によっては次のようにミスリーディングな表示になってしまう場合があります:
7777

@@ -80,11 +80,12 @@ line 8: undefined command: ...\mycommand
8080
```
8181
{: .noedit :}
8282

83-
これではあたかも `\mycommand` が未定義であるかのように読めますが、実際のエラーはそうではありません。
83+
これではあたかも`\mycommand`が未定義であるかのように読めますが、実際のエラーはそうではありません。
8484

8585
### アンバランスなブレース
8686

8787
```latex
88+
% !TEX program=pdflatex
8889
\documentclass{article}
8990
9091
\usepackage[leqno}{amsmath}
@@ -94,14 +95,14 @@ line 8: undefined command: ...\mycommand
9495
\end{document}
9596
```
9697

97-
上記のコード例ではアンバランスな `}` がオプション引数の終端で使用されています。この閉じブレースは LaTeX のオプション処理を失敗させるため、あまり役に立たない内部エラーを見ることになります:
98+
上記のコード例ではアンバランスな`}`がオプション引数の終端で使用されています。この閉じブレースはLaTeXのオプション処理を失敗させるため、あまり役に立たない内部エラーを見ることになります:
9899

99100
```
100101
! Argument of \@fileswith@ptions has an extra }.
101102
```
102103
{: .noedit :}
103104

104-
エラーの説明は役に立ちませんが、続く2行がエラー箇所を正確に示しています。改行位置は TeX がどこまで読むことができたかを示しています
105+
エラーの説明は役に立ちませんが、続く2行がエラー箇所を正確に示しています。改行位置はTeXがどこまで読むことができたかを示しています
105106

106107
```
107108
l.3 \usepackage[leqno}
@@ -112,6 +113,7 @@ l.3 \usepackage[leqno}
112113
### ファイルが見つからない
113114

114115
```latex
116+
% !TEX program=pdflatex
115117
\documentclass{article}
116118
117119
\usepackage{amsmathz}
@@ -133,7 +135,8 @@ l.3 \usepackage[leqno}
133135
### ディスプレイ数式内での空行
134136

135137
```
136-
\documentclass{jsarticle}
138+
\RequirePackage{plautopatch}
139+
\documentclass[dvipdfmx]{jlreq}
137140
138141
\begin{document}
139142

ja/more-15.md

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@
22
layout: "lesson"
33
lang: "ja"
44
title: "追加レッスン:エラーへの対処"
5-
description: "この追加レッスンでは LaTeX のよくあるエラーをもう少し紹介するとともに、連鎖するエラーやサイレントエラーについても説明します。"
5+
description: "この追加レッスンではLaTeXのよくあるエラーをもう少し紹介するとともに、連鎖するエラーやサイレントエラーについても説明します。"
66
toc-anchor-text: "追加レッスン:エラーへの対処"
77
---
88

99
## 環境の終わりで報告されるエラー
1010

11-
いくつかの環境(特に `amsmath` のアライメント環境や `tabularx` の表組み環境)は環境内の本文を、実際の処理を開始する前にすべて読み込みます。こうした環境では、その環境内で発生したエラーはすべてその環境の最後の行で報告されます。しかしメインレッスンで見てきたように、この場合でも TeX がエラー箇所として表示するのはエラーが発生したピンポイントな位置です
11+
いくつかの環境(特に`amsmath`のアライメント環境や`tabularx`の表組み環境)は環境内の本文を、実際の処理を開始する前にすべて読み込みます。こうした環境では、その環境内で発生したエラーはすべてその環境の最後の行で報告されます。しかしメインレッスンで見てきたように、この場合でもTeXがエラー箇所として表示するのはエラーが発生したピンポイントな位置です
1212

1313
```latex
14+
% !TEX program=pdflatex
1415
\documentclass{article}
1516
\usepackage[T1]{fontenc}
1617
@@ -45,11 +46,12 @@ l.12 \end{align}
4546

4647
## 先に発生したエラーによる不正確なエラー
4748

48-
LaTeX をコマンドラインで対話的に実行している場合には最初のエラーが起こった時点で `x` を押して処理を中断し、文書ソースを編集して再実行するということができます。しかしエラー箇所をスキップしたり、自動的にこうした指示を行うエディタやオンラインシステムを利用している場合には、TeX はどうにか正常に復帰しようとします。ところが、このことがかえって多くのエラー報告につながってしまうこともあります。
49+
LaTeXをコマンドラインで対話的に実行している場合には最初のエラーが起こった時点で`x`を押して処理を中断し、文書ソースを編集して再実行するということができます。しかしエラー箇所をスキップしたり、自動的にこうした指示を行うエディタやオンラインシステムを利用している場合には、TeXはどうにか正常に復帰しようとします。ところが、このことがかえって多くのエラー報告につながってしまうこともあります。
4950

5051
そのため発生したエラーの****はあまり気にせずに、報告された最初のエラーを修正することに注力しましょう。
5152

5253
```latex
54+
% !TEX program=pdflatex
5355
\documentclass{article}
5456
\usepackage[T1]{fontenc}
5557
@@ -60,9 +62,9 @@ More text.
6062
\end{document}
6163
```
6264

63-
上のコード例でのエラーは `\_` と入力すべきアンダーバーが `_` となっている箇所です。
65+
上のコード例でのエラーは`\_`と入力すべきアンダーバーが`_`となっている箇所です。
6466

65-
TeX はこの問題を**最初の**エラーメッセージとして正しく報告します。
67+
TeXはこの問題を**最初の**エラーメッセージとして正しく報告します。
6668

6769
```
6870
! Missing $ inserted.
@@ -74,12 +76,7 @@ l.5 Text_
7476
```
7577
{: .noedit :}
7678

77-
しかし、ここでもしプロンプトに `?` を入力してエラーをスキップすると、TeX は `$` を追加して `_` を数式モードの下付き文字として解釈します。この数式モードは終了の `$` が出てくるまで継続されるため、今度は続く `\alpha` がテキストモード内で出てくることになるため新たなエラーが発生します。
78-
79-
However if you scroll past the `?` prompt then TeX recovers by adding
80-
a `$` so the `_` is seen in math mode as a subscript. The math mode
81-
then continues until the `$` which ends math, so the following
82-
`\alpha` is seen in text mode generating another error
79+
しかし、ここでもしプロンプトに`?`を入力してエラーをスキップすると、TeXは`$`を追加して`_`を数式モードの下付き文字として解釈します。この数式モードは終了の`$`が出てくるまで継続されるため、今度は続く`\alpha`がテキストモード内で出てくることになるため新たなエラーが発生します。
8380

8481
```
8582
! Missing $ inserted.
@@ -95,9 +92,10 @@ l.5 Text_word $\alpha
9592

9693
ファイルの末尾まで検出されることのないエラーなど、一部のエラーはエラープロンプトを表示させません。こうしたエラーはログファイルに警告だけを残します。
9794

98-
下記のコード例を TeXLive.net で実行すると、デフォルトでは PDF が表示されます。ログの中にあるエラーメッセージを確認するためには、`%!TeX log` を追加する必要があります。
95+
下記のコード例をTeXLive.netで実行すると、デフォルトではPDFが表示されます。ログの中にあるエラーメッセージを確認するためには、`%!TeX log`を追加する必要があります。
9996

10097
```latex
98+
% !TEX program=pdflatex
10199
\documentclass{article}
102100
\usepackage[T1]{fontenc}
103101
@@ -108,7 +106,7 @@ l.5 Text_word $\alpha
108106
\end{document}
109107
```
110108

111-
このコード例ではフォントサイズの変更が `}` ではなく `)` で終了してしまっています。このエラーは TeX がファイルの最後まで読み込んだ上で、まだ閉じていないグループがあることによって初めて検知されます。そのため、ファイルの最後に至ってはじめて `{` で開始されたグループが閉じられていないことが報告されます。残念ながら `)` は通常のテキストとして解釈されてしまうため、TeX はグループを終了すべきその位置を特定することはできません
109+
このコード例ではフォントサイズの変更が`}`ではなく`)`で終了してしまっています。このエラーは TeX がファイルの最後まで読み込んだ上で、まだ閉じていないグループがあることによって初めて検知されます。そのため、ファイルの最後に至ってはじめて`{`で開始されたグループが閉じられていないことが報告されます。残念ながら`)`は通常のテキストとして解釈されてしまうため、TeXはグループを終了すべきその位置を特定することはできません
112110

113111
```
114112
(\end occurred inside a group at level 1)

0 commit comments

Comments
 (0)