renwecommand macht nicht was ich will

  • 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."

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


    Liegt vielleicht am UTF-8?

    Restrain the specimen!

  • 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."

  • 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 :)


    Hast du ein Beispiel davon, wie es nicht funktioniert?

    Restrain the specimen!

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

    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."

  • 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!

  • 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.

  • 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."

Jetzt mitmachen!

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