tl;dr
-
tabular
環境内である行最初のセルが[ ~ ]
から始まるとエラーを吐くことがある - 対処法としては以下などがある
どういう状況だったか
\documentclass{ltjsarticle}
\usepackage{unitsix}
\usepackage{mhchem}
% 中略
\begin{table}[h]
\begin{tabular}{c|r}
\hline 化合物・イオン&\thead{モル濃度} \\ \hline\hline
[\ce{H2SO4}] & \qty{5.74}{mol.L^{-1}} \\
[\ce{HSO4-}] & \qty{4.34}{mol.L^{-1}} \\ \hline
\end{tabular}
\end{table}
というようにしてpdfを作成するコマンドを実行すると,以下のようなエラーメッセージが返ってきた.
(ファイルの保存場所)100: Missing number, treated as zero.
<to be read again>
\tex_let:D l.100 [\ce{HSO4-}] & \qty{4.34}{mol.L^{-1}}
このエラーは以下のように説明されている3
数値あるいは寸法・グルーが必要な箇所に然るべき値が与えられなかった場合に現れるエラーメッセージ (のうちのひとつ)です.
[ボク].◦゜(つまりどういうこと??)
結局どういうエラーだったのか
- 行頭や行末の半角スペース,タブ文字,改行コードは無視される
- 強制改行の
\\
と[ ~ ]
が起こした事件
それぞれ説明していこう
行頭や行末の半角スペース,タブ文字,改行コードは無視される
例えば,今回実行したファイルのtabular
環境内のコードは,$\LaTeX$ファイルを作る際に以下のように認識される(はず).
\begin{table}[h]\begin{tabular}{c|r}\hline 化合物・イオン&\thead{モル濃度} \\ \hline\hline[\ce{H2SO4}] & \qty{5.74}{mol.L^{-1}} \\[\ce{HSO4-}] & \qty{4.34}{mol.L^{-1}} \\ \hline\end{tabular}\end{table}
強制改行の\\
と[ ~ ]
が起こした事件
勘のいいひとは気づいたかもしれないが,先ほど示したものの中に\\[\ce{HSO4-}]
という部分が含まれている.
実は,強制改行には\\[10pt]
のような角かっこ(bracket)を使ったマクロが存在する4.
ということは......
-
\\[\ce{HSO4-}]
が強制改行のマクロとして認識されてしまった-
\ce{HSO4-}
の部分が改行幅指定するべき数値として解釈された- これは数値ではないから,
Missing number, treated as zero.
とエラーを吐いた
- これは数値ではないから,
-
というような順序をたどったものと推測する.
それで解決法は?
冒頭に示した通り,簡単な解決法としては以下がある.
このどれもが,半角スペース,タブ文字,改行コードを除いたときに\\[ ~ ]
の並びを作らないための方法だ.
問題解決の参考になれば幸いです.
-
http://www.yamamo10.jp/yamamoto/comp/latex/make_doc/table/table.php#TECH (2025年5月11日閲覧)
tabular環境内で角かっこの使用できない場合がある旨と,コマンドによる角かっこの呼び出しを書いている ↩ ↩2 -
https://muscle-keisuke.hatenablog.com/entry/2016/07/13/004942 (2025年5月11日閲覧)
本質的にはこれと同じ問題だったのだなと執筆中に気づいた ↩ ↩2 -
https://texwiki.texjp.org/?TeX%20%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8 (2025年5月11日閲覧) ↩
-
https://medemanabu.net/latex/line-and-page-breaking/ (2025年5月11日閲覧) ↩