なぜ hyperref と \C を一緒に使用できないのですか?

なぜ hyperref と \C を一緒に使用できないのですか?

今日、TeXLive 2015 から TeXLive 2019 にアップデートしました (そろそろですよね?)。しかし、これまで遭遇したことのない問題が発生しています。通常、\C複素数はマクロとして宣言します。ただし、これはパッケージに関連するコマンドの暗黙的な宣言と衝突しますhyperref(これも必要です)。

次のエラーメッセージが表示されます:

! LaTeX Error: Command \C unavailable in encoding TU.

パッケージのマニュアルを確認しましたhyperrefが、コマンドは定義されていないようです\C

以下に最小限の動作例を示します。

\documentclass{article}

\usepackage{fontspec}

\usepackage{amsmath}
\usepackage{amssymb}
\DeclareMathOperator{\C}{\mathbb{C}}
\DeclareMathOperator{\R}{\mathbb{R}}
\usepackage{hyperref}


\begin{document}
$\C$
\end{document}

これは に固有のものであることに注意してください\C。このドキュメントは に対して適切にコンパイルされます\R

答え1

はブックマークを生成するために Unicode をカバーする必要があるためhyperref、 と呼ばれる独自の出力エンコーディングを定義しますPU

ファイルにpuenc.def

\DeclareTextCommand{\C}{PU}[1]{#1\83\017}% U+030F

so は\C結合二重重アクセントとして使用されます。

2 つの選択肢があります:

  1. \C複素数の の名前を、 \sC(set C) などの別の (おそらくより良い) 名前や、最も気に入った名前に変更します。

  2. 定義しません\C

後者については、

\documentclass{article}

\usepackage{fontspec}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{hyperref}

\let\C\relax

\DeclareMathOperator{\C}{\mathbb{C}}
\DeclareMathOperator{\R}{\mathbb{R}}

\begin{document}

$\C$

\end{document}

ブックマークには注意し、奇妙なアクセントを使わないようにしてください。

答え2

\C を \mathbf{C} のマクロとして使用している文書がおそらく 100 個ほどありますが、この衝突によりすべてが失われています。文書内の単語を置換する Python プログラムを作成し、すべての *.tex 文書で実行して \C を \CC に変更しました (Python が "\C" を理解するには 2 つの \ が必要です)。興味のある方は、substitui_palavra.py を参照してください。http://www.calculo-numerico.sobralmatematica.org/programas/substitui_palavra.pyt 「.pyt」を「.py」に変更します。

関連情報