beamer-lualatex: エンコーディングを設定するときにパッケージ fontspec のオプションが衝突する

beamer-lualatex: エンコーディングを設定するときにパッケージ fontspec のオプションが衝突する

lualatexを使用してビーマードキュメントをコンパイルする場合、fontspec問題なくパッケージを使用します。ただし、このMWEのようにエンコーディングを設定すると、常にこのエラーが発生します。

パッケージ fontspec のオプションの衝突

fontspecエンコーディングを指定せずにロードする必要がありますか、それとも何かが欠けているのでしょうか?

\documentclass[lualatex]{beamer}
\usepackage{pgfpages,blindtext}
\usetheme{metropolis}

\usepackage[tuenc]{fontspec}

\begin{document}

\begin{frame}
    \blindtext
\end{frame}

\end{document}

答え1

\documentclass[lualatex]{beamer}
\usepackage{pgfpages,blindtext}
\usetheme{metropolis}
\begin{document}

    \begin{frame}
        \blindtext
    \end{frame}

\end{document}

問題ないはずです。実行時にlualatexfontspec はすでにtuenc定義ファイルとともにロードされています:

[...] (/usr/local/texlive/2017/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty (/usr/local/texlive/2017/texmf-dist/tex/latex/base/fontenc.sty (/usr/local/texlive/2017/texmf-dist/tex/latex/base/tuenc.def)) (/usr/local/texlive/2017/texmf-dist/tex/latex/fontspec/fontspec.cfg)(load luc: [...]

答え2

内部的には、metropolis テーマは xetex または luatex に対して次の処理を実行します。

\@ifpackageloaded{fontspec}{
  \PassOptionsToPackage{no-math}{fontspec}
}{
  \RequirePackage[no-math]{fontspec}
}

つまり、パッケージをロードする順序を変更するだけで(fontspecmetropolis)、オプション衝突エラーが解消されます。ただし、ウルリケ・フィッシャーのコメントすでにロードされているパッケージにオプションを渡すこともあまり意味がありません。そのため、次のようにすることができます。

\documentclass[lualatex]{beamer}
\usepackage{pgfpages,blindtext}

\PassOptionsToPackage{tuenc}{fontspec}
\usetheme{metropolis}

\begin{document}

\begin{frame}
    \blindtext
\end{frame}

\end{document}

関連情報