1. ホーム
  2. r

[解決済み] rmarkdown to knit+pandoc pdfで複数行の式に「 \begin{align} 」を使用すると「式構造の誤ったネスト」が発生する。

2022-02-16 02:20:15

質問

R Markdown - LaTeX で、自動番号付けと \begin{align} を使って、複数行の方程式を書いています。以下はその例です。

---
title: "test"
output: html_document
---

(@eq01) $$
\begin{align}
y = x^2 \\
y = x^3 \\
y = \sqrt[2]{x}
\end{align}
$$

これは、出力が html_document である場合にうまく機能します。以下はその結果です。

しかし、出力ドキュメントをpdfに変更すると

output: pdf_document

以下のエラーが発生します(RStudio最新版0.98.1056を使用しています)。

エラーメッセージにあるように、ドキュメントを読んでみたのですが、どうもうまくいきません。Stack OverflowやGoogleで調べてみましたが、関連する投稿・質問はあるものの(例えば こちら , こちら , こちら )、どれも問題を解決してくれません(あるいは私の問題に適用されません)。

また、すべてをいじってみました。一番わかりやすい解決策は、㊙begin{align}環境をなくすことでしょうか。

(@eq01) $$
y = x^2 \\
y = x^3 \\
y = \sqrt[2]{x}
$$

が、2つの理由でうまくいきません。まず、自動番号付けが複数行の式の中央に表示されず、最初の行に表示されるため、htmlバージョンはきれいに動作しません(そして、私はそのような状態が好きではありません)。

次に、この場合のpdf版はコンパイルしてpdfを作成するものの、複数行の数式であることを認識しません(改行コマンドの˶を認識しないようなもの)。

何かアイデアがあれば、本当にありがたいです。しばらく悩んでいるのですが、解決策が見当たりません。私はR Markdownが好きです。なぜなら、それは本当に単一のツールで分析、記述、およびコミュニケーションを統合するからです(多くの異なるツールを使って行ったり来たりするよりもむしろ)。しかし、1つのソースファイルを書き、それが複数の異なる出力フォーマットで適切にレンダリングできるようになるには、まだ長い道のりがあるようです。

どのように解決するのか?

整列したブロックをPDFに送信しようとすると、同じエラーが表示されました。以下を変更してみてください。

$$
\begin{align}
y = x^2 \\
y = x^3 \\
y = \sqrt[2]{x}
\end{align}
$$

を以下のように変更します。

$$
\begin{aligned}
y = x^2 \\
y = x^3 \\
y = \sqrt[2]{x}
\end{aligned}
$$

\begin{align} は自己充足的な数学環境であるのに対し \begin{aligned} は、既存の数学環境の中に配置する必要があります。Rmdは数学セクションを $$...$$ のような気がします。 \begin{align} は、最初の数学環境の中で2番目の数学環境を始めようとしていて、問題を起こしていたのです。