1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

renwecommand macht nicht was ich will

  • Dieli
  • 6. November 2005 um 18:25
  • Unerledigt
  • Dieli
    4
    Dieli
    Mitglied
    Punkte
    130
    Beiträge
    23
    • 6. November 2005 um 18:25
    • #1

    Hi!

    Meine selbstdefinierten Befehle funktionieren, aber nur, wenn sie ganz am Anfang einer Zeile/Zelle stehen. Innerhalb der Zelle nimmt latex den alten Befehl. Warum?

    Hier mal der Code (zur besseren lesbarkeit mit Enter und Spaces):

    Code
    \renewcommand*{\'}[2]{
    \if#1c{\if#24{Ä}\fi}
      \else\if#1d{\if#26{Ö}
      \else\if#2c{Ü}
      \else\if#2f{ß}\fi\fi\fi}
    \else\if#1f{\if#2c{ü}
      \else\if#26{ö}\fi\fi}
    \else\if#1e{\if#24{ä}\fi}\fi\fi\fi\fi}

    Habe ich jetzt zum Beispiel: \'e4\'e4 stehen, bekomme ich als Ausgabe: äé4 und nicht ää.

    Zu meinem System: Miktex 2.4 mit Texniccenter 1.631, Win XP (SP2).

    mfg Dieli

    Arvid: "Ich hab Hanne getötet."
    Harald: "Hanne? ... Wer ist Hanne? ... Wieso?"
    Arvid: "Sie hat den Fernseher mitnehmen wollen."
    Harald: "Ehrlich? ... Ja dann ... Wo is sie?"
    Arvid: "Zu Hause ... im Flur ... und in der Küche."

  • daff
    14
    daff
    Mitglied
    Reaktionen
    11
    Punkte
    2.021
    Beiträge
    386
    • 9. November 2005 um 02:40
    • #2

    Also bei mir funktioniert dein Makro, allerdings verwend ich teTeX 3.0 unter Linux mit UTF-8. Hier ein Minimal Working Example ™

    LaTeX
    \documentclass[a4paper]{article}
    \usepackage[ngerman]{babel}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \renewcommand*{\'}[2]{\if#1c{\if#24{Ä}\fi}\else\if#1d{\if#26{Ö}\else\if#2c{Ü}\else\if#2f{ß}\fi\fi\fi}\else\if#1f{\if#2c{ü}\else\if#26{ö}\fi\fi}\else\if#1e{\if#24{ä}\fi}\fi\fi\fi\fi}
    
    
    \begin{document}
    Blahblahblah \'e4\'e4 weiterblah\\
    \'e4\'e4 blahblahblah
    \end{document}
    Alles anzeigen


    Liegt vielleicht am UTF-8?

    Restrain the specimen!

  • Dieli
    4
    Dieli
    Mitglied
    Punkte
    130
    Beiträge
    23
    • 9. November 2005 um 13:21
    • #3

    Hab gerade eine neue Erkenntnis. Das Beispiel von dir funkt bei mir auch. Das Problem jetzt ist, dass ich das ganze in einer tabular umgebung verwende, und dort funkts nicht.

    Irgendwelche Ideen warum das so ist und wie man das beheben kann?

    mfg Dieli

    Arvid: "Ich hab Hanne getötet."
    Harald: "Hanne? ... Wer ist Hanne? ... Wieso?"
    Arvid: "Sie hat den Fernseher mitnehmen wollen."
    Harald: "Ehrlich? ... Ja dann ... Wo is sie?"
    Arvid: "Zu Hause ... im Flur ... und in der Küche."

  • daff
    14
    daff
    Mitglied
    Reaktionen
    11
    Punkte
    2.021
    Beiträge
    386
    • 10. November 2005 um 01:06
    • #4

    Hm, also bei mir tut dein Command auch in einem tabular-Environment das was es soll. Im Anhang ein Screenshot, falls du mir nicht glaubst :)

    LaTeX
    \documentclass[a4paper]{article}
    \usepackage[ngerman]{babel}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \renewcommand*{\'}[2]{\if#1c{\if#24{Ä}\fi}\else\if#1d{\if#26{Ö}\else\if#2c{Ü}\else\if#2f{ß}\fi\fi\fi}\else\if#1f{\if#2c{ü}\else\if#26{ö}\fi\fi}\else\if#1e{\if#24{ä}\fi}\fi\fi\fi\fi}
    
    
    \begin{document}
    \begin{tabular}[h]{c|c}
        \'e4\'e4testspalte1 \'e4\'e4 & \'e4\'e4testspalte\'e4\'e4\\
        \hline
        \hline
        blahblahblah \'e4\'e4 weiterblah & muhkuh \'e4\'e4\'e4 haha\\
        \'e4\'e4 weiterblah \'e4\'e4 & \'e4\'e4 muhkuh \'e4\'e4\'e4 haha
    \end{tabular} \\
    Blahblahblah \'e4\'e4 weiterblah\\
    \'e4\'e4 blahblahblah
    \end{document}
    Alles anzeigen


    Hast du ein Beispiel davon, wie es nicht funktioniert?

    Restrain the specimen!

  • Dieli
    4
    Dieli
    Mitglied
    Punkte
    130
    Beiträge
    23
    • 10. November 2005 um 08:07
    • #5

    Argh ... das funkt sogar. Der einzige Unterschied ist jetzt nur noch, dass ich die Spaltenbreite mit p{xmm} definiert hab.

    LaTeX
    \documentclass[a4paper]{article}
    \usepackage[ngerman]{babel}
    %\usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \renewcommand*{\'}[2]{\if#1c{\if#24{Ä}\fi}\else\if#1d{\if#26{Ö}\else\if#2c{Ü}\else\if#2f{ß}\fi\fi\fi}\else\if#1f{\if#2c{ü}\else\if#26{ö}\fi\fi}\else\if#1e{\if#24{ä}\fi}\fi\fi\fi\fi}
    
    
    \begin{document}
    \begin{tabular}[h]{c|c|p{30mm}|p{30mm}}
        \'e4\'e4testspalte1 \'e4\'e4 & \'e4\'e4testspalte\'e4\'e4&\'e4\'e4testspalte1 \'e4\'e4 & \'e4\'e4testspalte\'e4\'e4\\
    
    
        \hline
        \hline
        blahblahblah \'e4\'e4 weiterblah & muhkuh \'e4\'e4\'e4 haha& blahblahblah \'e4\'e4 weiterblah & muhkuh \'e4\'e4\'e4 haha\\
        \'e4\'e4 weiterblah \'e4\'e4 & \'e4\'e4 muhkuh \'e4\'e4\'e4 haha
    \end{tabular} \\
    Blahblahblah \'e4\'e4 weiterblah\\
    \'e4\'e4 blahblahblah
    \end{document}
    Alles anzeigen

    Im Anhang ist das pdf wies bei mir ausschaut.

    mfg Dieli

    Arvid: "Ich hab Hanne getötet."
    Harald: "Hanne? ... Wer ist Hanne? ... Wieso?"
    Arvid: "Sie hat den Fernseher mitnehmen wollen."
    Harald: "Ehrlich? ... Ja dann ... Wo is sie?"
    Arvid: "Zu Hause ... im Flur ... und in der Küche."

  • daff
    14
    daff
    Mitglied
    Reaktionen
    11
    Punkte
    2.021
    Beiträge
    386
    • 10. November 2005 um 16:07
    • #6

    Ja, das funktioniert bei mir auch nicht wenn die Spaltenbreite beschränkt wird.

    Tut mir leid, kann dir nicht weiterhelfen, weiß nicht woran das liegt. Allerdings wäre das einen Post in comp.text.tex oder vielleicht besser de.comp.text.tex wert, die kennen sich dort sicher besser aus mit sowas. Am Besten du postest beide Beispiele, das wo es funktioniert und das wo es eben nicht geht.

    Und du postest dann hier die Lösung :)

    Restrain the specimen!

  • Neutrino
    5
    Neutrino
    Mitglied
    Reaktionen
    6
    Punkte
    216
    Beiträge
    42
    • 10. November 2005 um 16:25
    • #7

    also die sache ist ganz einfach und logisch, wenn man ein wenig im latex-source code herumstochert :)

    nachdem das erste kommando am anfang einer p-spalte in einem tabular- oder array-environment gelesen wurde, sagt latex: hoppla, hier beginnt ein p-eintrag, da muss ich doch die p-spalten-initialisierung durchführen.
    und ruft das kommando \@arrayparboxrestore auf. dieses führt u.a. ein

    Code
    \let\'\@acci

    aus. und \@acci ist nichts anderes als der originale wert von \' ganz am anfang des latex-format-files definiert durch

    Code
    \let\@acci\'


    d.h.: das erste kommando oder zeichen des tabelleneintrags wird noch gelesen (\'e4) und verarbeitet, dann wird \' auf seinen originalen akzent-wert gesetzt, und schon tauchen die französischen e's auf.

    hier ein hack, um dein problem zu lösen: füge vor \begin{document} die zeilen

    Code
    \makeatletter
    \let\@acci\'
    \makeatother

    ein, und es funkt.

    alles klar?

    nu, der damit sein tagwerk vollbracht hat.

  • Dieli
    4
    Dieli
    Mitglied
    Punkte
    130
    Beiträge
    23
    • 10. November 2005 um 23:47
    • #8

    Cool ... danke sehr. Jetzt funkts.

    mfg Dieli

    Arvid: "Ich hab Hanne getötet."
    Harald: "Hanne? ... Wer ist Hanne? ... Wieso?"
    Arvid: "Sie hat den Fernseher mitnehmen wollen."
    Harald: "Ehrlich? ... Ja dann ... Wo is sie?"
    Arvid: "Zu Hause ... im Flur ... und in der Küche."

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung