PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variable definieren und formatieren



s.doubleu
23-07-2009, 16:36
Hallo ...
wie der Titel schon sagt, möchte ich mir eine neue Variable definieren (String) und diesen dann mehrere unterschiedliche Formate zuweisen.
Zum definieren nutze ich diesen Behfehl:


\newcommand\defvar[1]{\newcommand{\var}{#1}}
\defvar{Herzlich Willkommen,}

Und zum Abrufen diesen:


\var

(ich hoffe ich habe mich jetzt nicht irgendwo verschrieben)
Um die Variable zu definieren und gleich zu formatieren kann ich das so machen:


\newcommand\defvar[1]{\newcommand{\var}{\textbf{\Large{\textcolor{red}{ #1}}}}}
\defvar{Herzlich Willkommen,}

So ist es aber sehr verschachtelt und unübersichtlich. Gibt es eine elegantere Lösung?

Danke

u_fischer
23-07-2009, 16:51
Was soll das mit dem \defvar? Warum machst du nicht gleich

\(re)newcommand\var{{\bfseries\color{red}\large Herzlich Willkommen}}

s.doubleu
23-07-2009, 19:20
Hallo ...

Danke für die Antwort Ulrike.
Der Umstand will / muss ich machen, da ich für die Übersichtlickeit den Wert für die Variable \defvar


\defvar{Herzlich Willkommen,}

erst später in meinem Dokument setzen will, wo dann auch mehrere andere Variablen definiert werden sollen. Das ich so alle auf einen Schlag einen Wert (jede für sich einen) zuweisen kann und im Header die Formatierung dafür schon gesetzt sind.
Vielleicht ist es auch anders möglich die Formatierung und die Wertzuweisung einer Variable getrennt umzusetzen.

ich hoffe ich habe mein anliegen einigermaßen verständlich rüber gebracht. Ansonsten nochmal hier anders.


%% Header - eventuell separate Datei
Variablen erstellen und Formatierung zuweisen

%% Definition - vielleicht auch separate Datei
Variablen definieren (wert zuweisen)

%% tex document
variablen aufrufen


Vielen Dank für weitere Vorschläge,
Stefan

mechanicus
23-07-2009, 19:50
Hallo,

dann baue dir noch einen Befehl:


\documentclass{scrartcl}

\usepackage{xcolor,xspace}
\makeatletter
\newcommand{\@formatvar}{×}
\def\@formatvar#1{\bfseries\color{#1}\Large}
\newcommand{\defvar}{×}
\newcommand{\var}{×}
\def\defvar#1{\def\var{{\@formatvar{red}#1}\xspace }}
\makeatother
\usepackage{lipsum}

\begin{document}
Ausgabe von \verb+\var+ \var

\defvar{neu}
\verb+\defvar{neu}+ ergibt \var und weiter geht es

\defvar{nochmalneu}
\verb+\defvar{nochmalneu}+ ergibt \var und weiter geht es

\end{document}


Gruß
Marco

u_fischer
24-07-2009, 08:49
Du hast ein falsches Konzept von Variablen im Sinn. Du kannst nicht wirklich zwischen "Wert" und "Formatierung" trennen. Ein Befehl wie \var hat eine Definition und diese Definition kann auch Formatierungsanweisungen enthalten.

Aber natürlich kannst du einen Sack Formatierungsanweisungen unter einem Befehl zusammenfassen, als Switch ohne Argumente:


\newcommand\meinevariablenformatierung{\large\colo r{red}\itshape}
oder mit Argument


\newcommand\meinevariablenformatierungmitarg[1]{\large\color{red}\underline{#1}

Und diese Befehle kannst du dann genau so wie \large oder \textbf benutzen.



% Initialisieren
\newcommand\myvar{}

...

\renewcommand\myvar[1]{{\meinvariableformatierungmitarg{#1}}}