Warum kann ich Hyperref und \C nicht zusammen verwenden?

Warum kann ich Hyperref und \C nicht zusammen verwenden?

Heute habe ich von TeXLive 2015 auf TeXLive 2019 aktualisiert (wurde auch Zeit, oder?). Allerdings habe ich ein Problem, das ich bisher noch nicht hatte. Normalerweise deklariere ich \Cdie komplexen Zahlen als Makro. Dies kollidiert jedoch mit einer impliziten Deklaration eines Befehls, der sich auf das hyperrefPaket bezieht (das ich auch brauche).

Ich erhalte folgende Fehlermeldung:

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

Ich habe das Handbuch des hyperrefPakets überprüft, aber es scheint, dass dort kein Befehl definiert ist \C.

Hier ist ein minimales funktionierendes Beispiel:

\documentclass{article}

\usepackage{fontspec}

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


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

Beachten Sie, dass dies nur für gilt \C. Das Dokument wird für ordnungsgemäß kompiliert \R.

Antwort1

Da hyperrefzur Erzeugung von Lesezeichen Unicode abgedeckt werden muss, wird eine eigene Ausgabekodierung namens definiert PU.

In der Datei puenc.deffinden wir

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

wird so \Cfür den kombinierenden doppelten Gravis verwendet.

Sie haben zwei Alternativen:

  1. ändern Sie den Namen \Cder komplexen Zahlen in einen anderen (vielleicht besseren) Namen, beispielsweise \sC(Menge C) oder was Ihnen am besten gefällt;

  2. undefiniert \C.

Für letztere,

\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}

Gehen Sie mit Ihren Lesezeichen vorsichtig um und achten Sie darauf, diesen seltsamen Akzent nicht zu verwenden.

Antwort2

Ich habe vielleicht hundert Dokumente, in denen ich \C als Makro für \mathbf{C} verwende, und alle davon gehen aufgrund dieser Kollision verloren. Ich habe ein Python-Programm zum Ersetzen von Wörtern in Dokumenten geschrieben, das ich auf allen meinen *.tex-Dokumenten ausgeführt habe, um \C durch \CC zu ersetzen (das doppelte \ ist notwendig, damit Python "\C" versteht). Wer interessiert ist, findet substitui_palavra.py unterhttp://www.calculo-numerico.sobralmatematica.org/programas/substitui_palavra.pyt und ändern Sie ".pyt" in ".py".

verwandte Informationen