PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : newcommand bekomme kein leerzeichen dahinter?!?



youCanCallMeAl
27-10-2005, 17:13
hallo,
ich hab ein neues makro erstellt mit newcommand, sieht so aus:
\newcommand{\tibia}{{\em Tibiakoordinatensystem}}

funktioniert soweit auch ganz gut, also immer wenn ich im text \tibia schreibe, erstetzt es mir durch: Tibiakoordinatensystem

allerdings schaff ich es nicht ein leer zeichen zwischen "Tibiakoordinatensystem" und dem anschliesenden text einzufügen.
d.h. der text schreibt direkt nach Tibiakoordinatensystemweiter <- so ungefähr

ändere ich das makro in \newcommand{\tibia}{{\em Tibiakoordinatensystem} } funktioniert es zwar, allerdings hab ich dann immer ein leerzeichen, auch vor einem punkt oder komma.

bin ziemlicher latex anfänger, bitte deswegen um verständnis :-)
Al

edico
27-10-2005, 17:37
... 'aendere ich das makro ...' versteht ich nicht - was aenderst du? Ich kann gar keinen Unterschied erkennen.
Geht es denn nicht so oder aehnlich:
%
\documentclass{article}
\newcommand{\tibia}{{\em Tibiakoordinatensystem~}}
\newcommand{\tibib}{{\em Tibiakoordinatensystem\,}}
\newcommand{\tibic}{{\em Tibiakoordinatensystem\enspace}}
\newcommand{\tibid}{{\em Tibiakoordinatensystem\quad}}
\newcommand{\tibie}{{\em Tibiakoordinatensystem\qquad}}
\begin{document}
\tibia hier tanzt der Baer\par
\tibib hier tanzt der Baer\par
\tibic hier tanzt der Baer\par
\tibid hier tanzt der Baer\par
\tibie hier tanzt der Baer\par
\end{document}
%
edico

youCanCallMeAl
27-10-2005, 17:55
na einmal hab ich so
\newcommand{\tibia}{{\em Tibiakoordinatensystem} }
\newcommand{\tibia}{{\em Tibiakoordinatensystem}}
das andere mal so, also einmal mit einmal ohne leerzeichen,

welchen zweck hat den ~ oder \enspace

countbela666
27-10-2005, 18:33
Hallo Al,

ein Leerzeichen zwischen deinem Befehl und dem nächsten Wort erzeugst du folgendermaßen:

\tibia\ blabla % oder
\tibia{} blabla
ansonsten wird das Leerzeichen nach einem Befehl/Makro vom Lexer "gefressen".

Zu den anderen Befehlen:

\enspace = \hspace{.5em}
\quad = \hspace{1em}
\qquad = \hspace{2em}
~ = NBSP (non-breaking space): geschütztes Leerzeichen, das das ungewollte Umbrechen zwischen zwei Worten an Stelle eines Leerzeichens verhindern soll (z.B. bei Abb.~1 oder Dr.~Schulze); in LaTeX ist die Tilde ein Makro, das auf \nobreakspace verweist, welches ein robuster Befehl ist, der wiederum normalerweise zu {\leavevmode\nobreak} expandiert

Grüße,
Marcel

youCanCallMeAl
27-10-2005, 19:06
hi marcel,
danke, das wollte ich wissen!

burny
29-11-2007, 14:00
Ich würde das Thema gern nochmal aufgreifen, weil ich genau das gleiche Problem hab.

Kann man das Makro so schreiben, dass beide Sonderfälle abgedeckt werden, d.h. wenn nach dem Makro ein Space ist, soll im Text übernommen werden, wenn z.B. ein Doppelpunkt, etc. kommt soll kein Space dazwischen sein?

EDIT:
so gehts:

\usepackage{xspace}
\def\myNewCmd{\emph{my text}\xspace}