Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Makro mit \catcode

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.02.2011
    Beiträge
    47

    Makro mit \catcode

    Aus einer Sammlung von LaTeX-Makros habe ich früher (ca. 2003, WinEdt) folgenden TeX-Zweizeiler benutzt:
    Code:
    \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

  2. #2
    Registrierter Benutzer
    Registriert seit
    16.02.2011
    Beiträge
    47
    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

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    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).

  4. #4
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Hi,

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

    Code:
    \documentclass{article}
    
    \usepackage[utf8]{inputenc}
    
    \expandafter\def\csname u8:\detokenize{²}\endcsname#1%
       {\hbox{$\displaystyle{#1}$}}
    \begin{document}
    ²{x+y}
    \end{document}
    Marco

  5. #5
    Registrierter Benutzer
    Registriert seit
    16.02.2011
    Beiträge
    47
    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

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •