newcommand mag kein ^?

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: newcommand mag kein ^?

von cgnieder » Fr 9. Nov 2012, 11:41

Das Problem sind folgende Definitionen:
\newcommand{\C1}[1]{C^1(#1)}
\newcommand{\C2}[1]{C^2(#1)}
Um konkret zu sein ist die 1 bzw. die 2 im Befehlsnamen der Knackpunkt. Als Zeichen eines Makronamens sind entweder nur Zeichen mit Kategorie-Code »letter« erlaubt (was ohne Änderungen des Standardverhaltens Groß- und Kleinbuchstaben sind) oder ein Charakter mit Kategorie-Code »other« (wozu auch arabische Ziffern zählen). Langer Rede kurzer Sinn: »\C2« ist als Makroname nicht möglich/erlaubt. Es gibt natürlich Wege, das zu umgehen (\csname ... \endcsname) aber meiner Meinung nach wäre das einfachste, ein begrenztes Argument einzuführen:
\documentclass{scrartcl}
\def\C#1(#2){%
  C\ifx\relax#1\relax\else ^{#1}\fi(#2)}
\begin{document}

\[ \C(x) \C1(x) \C2(x) \]
\[ C(x) C^1(x) C^2(x) \]

\end{document}
Wo allerdings der große Vorteil gegenüber der direkten Eingabe in diesem Fall ist, ist mir unklar.

Grüße

von bloodworks » Do 11. Okt 2012, 19:48

So kannst du das nicht machen. Eins wird als neues Token interpretiert. Deshlab der Fehler mit dem Mathe modus hat das da nix zu tun. Der fehler bezieht sich auf ein nicht-command token im header.

So kannst du das machen:
\documentclass[a4paper,twocolumn,fontsize=12pt,parskip]{scrartcl} 
\usepackage[ngerman]{babel}                         
\usepackage[latin9]{inputenc}                         
\usepackage[T1]{fontenc}             
\usepackage{amsmath}                             
\usepackage{amsfonts} 
\usepackage{amssymb} 
                        

% Eigene Befehle 
\newcommand{\td}{\text{d}} 
\renewcommand{\d}{\partial} 
\newcommand{\bG}{\bar{G}} 
\newcommand{\bK}{\bar{K}} 
% so 
\newcommand{\ca}[1]{C^2(#1)} 
%oder so
\expandafter\newcommand\csname C2 \endcsname[1]{C^1(#1)} 
%% newcommand wird verzögert bis csname fertig ist. 

\newcommand{\C}[1]{C(#1)} 

                           
                       
\begin{document} 
hallo
$\ca{a}$
$\C2{b}$
\end{document} 
  

newcommand mag kein ^?

von Lala » Do 11. Okt 2012, 18:16

Bei folgendem Header erhalte ich folgende Fehlermeldung:
\documentclass[a4paper,twocolumn,fontsize=12pt,parskip]{scrartcl}
\usepackage[ngerman]{babel} 								
\usepackage[latin9]{inputenc}								
\usepackage[T1]{fontenc}				
\usepackage{amsmath} 									
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{blindtext}									

% Eigene Befehle
\newcommand{\td}{\text{d}}
\renewcommand{\d}{\partial}
\newcommand{\bG}{\bar{G}}
\newcommand{\bK}{\bar{K}}
\newcommand{\C2}[1]{C^2(#1)}
\newcommand{\C1}[1]{C^1(#1)}
\newcommand{\C}[1]{C(#1)}

\title{}
\author{Lala}
\date{\today}											
							
\begin{document}

\blindtext[50]

\end{document}
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.54 \newcommand*{\C2}[1]{C^2(#1)}
You're in trouble here. Try typing <return> to proceed.
If that doesn't work, type X <return> to quit.
! Missing $ inserted.
<inserted text>
$
l.54 \newcommand*{\C2}[1]{C^2(#1)}
I've inserted a begin-math/end-math symbol since I think
you left one out. Proceed, with fingers crossed.


Achja und gegen die # hatte er auch was...
Kann man sich sowas also nicht definieren?

Nach oben