Anzeige:
Ergebnis 1 bis 4 von 4

Thema: \newcommand mit Zahlen

  1. #1
    Registrierter Benutzer Avatar von ooze
    Registriert seit
    08.03.2010
    Ort
    München
    Beiträge
    43

    \newcommand mit Zahlen

    Moin,
    gibt es irgendeine Möglichkeit sich ein Kommando wie \11 oder \22 oder so zu definieren? Ich muss haufenweise Sachen wie $a_{11}$ oder $a_{22}^2$, etc. eintippen und würde mir das durch
    \newcommand{\11}{\ensuremath{a_{11}}} gerne abkürzen. Aber irgendwie scheint das nicht zu gehen. Kann man das vielleicht doch irgendwie hintricksen?

    ein \einseins oder so hilft mir leider nicht weiter.

    ooze
    OS: Mac OS X 10.6.4
    TeX Distribution: MacTeX-2010 (TeXLive)
    TeX Editor: TeXShop

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Im Prinzip schon

    Code:
    \documentclass{article}
    \newcommand{\1}[1]{%
        \ensuremath{a_{1#1}}}
    
    \begin{document}
    \11 \12 \1{23}
    \end{document}

  3. #3
    Registrierter Benutzer Avatar von ooze
    Registriert seit
    08.03.2010
    Ort
    München
    Beiträge
    43
    Zitat Zitat von u_fischer Beitrag anzeigen
    Im Prinzip schon

    Code:
    \documentclass{article}
    \newcommand{\1}[1]{%
        \ensuremath{a_{1#1}}}
    
    \begin{document}
    \11 \12 \1{23}
    \end{document}
    Oha ;-). Das ist aber auch schlau! Vielen Dank!

    Falls jemand einen plausiblen Grund kennt, warum Makros der Form \123 nicht möglich sind, würde ich ihn natürlich gerne erfahren.
    OS: Mac OS X 10.6.4
    TeX Distribution: MacTeX-2010 (TeXLive)
    TeX Editor: TeXShop

  4. #4
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    TeX hat wie alle anderen Programmiersprache Regeln "wie darf ein Befehlsname aussehen". Es gibt "ein-Zeichen-Befehle". Die können mit allen Zeichen definiert werden. Beispiele sind \% \\ \, \$ und hier \1.

    Längere Befehlsnamen müssen aus Buchstaben bestehen, sie enden am ersten "Nichtbuchstabe". Was ein Buchstabe ist, entscheidet sich am catcode. So wie du @ mit \makeatletter zu einem Buchstaben machen kannst, kannst du auch Zahlen zu Buchstaben machen und dann Befehle wie \123 definieren. Das wird dir aber sehr schnell um die Ohren fliegen, wie du testen kannst, indem du mal den \setlength-Befehl auskommentierst:

    Code:
    \documentclass{article}
    
    \begin{document}
    \begingroup
     \chardef\lettercatcode=11
     \catcode`\1=\lettercatcode
     \catcode`\2=\lettercatcode
     \catcode`\3=\lettercatcode
    \newcommand\123{blub}
    \123
    
    %\setlength\parskip{1em}
    \endgroup
    
    \end{document}

Lesezeichen

Berechtigungen

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