PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Makro mit \catcode



helm
30-10-2011, 21:50
Aus einer Sammlung von LaTeX-Makros habe ich früher (ca. 2003, WinEdt) folgenden TeX-Zweizeiler benutzt:


\catcode`\²=\active
\def²#1²{\hbox{$\displaystyle{#1}$}}

Das Makro wird dann z.B. entsprechend ²c=a+b² eingesetzt. Das hat vor Jahren auch funktioniert

Jetzt arbeite ich mit MikTex 2.8 und TeXstudio und will ein älteres Projekt editieren, in dem dieses Makro hundertfach verwendet wird. Leider erzeugt es jetzt aber den Fehler, wie im jpg-Anhang abgebildet.

Ich habe den Verdacht, dass das etwas mit der Kodierung zu tun hat, weil ich in einer älteren Datensicherung das Makro mit � (eigentlich ein O-ähnliches Quadrat) statt ² gefunden habe.

Kann mir dazu bitte jemand einen Reparaturtipp geben? Meine Versuche mit unterschiedlichen Kodierungseinstellungen (utf8 usw.) haben nicht gefruchtet.

Herzliche Grüße
helm

helm
31-10-2011, 12:31
Noch eine Information zum Problem:
Die Makro-Definition steht in einer separaten Datei, in der alle anderen Makros auch versammelt sind. Sie wird in der Präambel des Zentraldokuments per input aufgerufen.
Herzliche Grüße
Helm

u_fischer
31-10-2011, 15:54
Deine Datei scheint utf8-kodiert zu sein. Dann funktioniert dein \catcode-Befehl mit pdftex nicht. Absolut chancenlos. Die Syntax des \catcode-Befehls ist eindeutig: Argument ist genau ein Eingabezeichen und diesem Argument wird eine Nummer zugeordnet. In utf8 wird deine Superscript-2 mit zwei 8-bit-Blöcken kodiert: 11000010 10110010. Für pdflatex sieht das aus wie zwei Eingabezeichen.


Du musst entweder für all deine Dateien eine 8-Bit-Kodierung benutzen, oder eine Unicode-Engine benutzen (xelatex oder lualatex).

mechanicus
31-10-2011, 19:36
Hi,

um eine Annäherung an deinen Wunsch zu gewährleisten:


\documentclass{article}

\usepackage[utf8]{inputenc}

\expandafter\def\csname u8:\detokenize{²}\endcsname#1%
{\hbox{$\displaystyle{#1}$}}
\begin{document}
²{x+y}
\end{document}

Marco

helm
05-11-2011, 22:10
Vielen Dank, u_fischer und mechanicus!

utf-8 steckte tatsächlich dahinter. Mit der Zeichenkodierung windows-1252 und der Option [ansinew] im package {inputenc} klappt es wieder.

Ich frage mich manchmal: Hätte ich mich mit einem wysiwyg-Schreibprogramm so liebevoll auseinander gesetzt wie mit LaTeX - hätte ich möglicherweise viel Zeit und Nerven in den letzten 15 Jahren gespart - auch wenn das Produkt ein Lehrbuch mit 500 Seiten und vielen Formeln, Tabellen und Bildern ist?

Herzliche Grüße
Helm