PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Konstanten in Latex



Ka55i0peia
08-03-2009, 16:13
Hallo Leute,

hat jemand ne Idee wie ich folgendes Problem umgehe?

Minimalbeispiel:


% Haupt-Style definieren
\newcommand{\mainSqlListingOptions}{%
language=SQL,%
basicstyle={\ttfamily\footnotesize}
%u.v.v.m.
}

% Typ I : \sqlInline{Code}
\newcommand{\sqlInline}[1]%
{ \lstinline[\mainSqlListingOptions]{#1} }

% Typ II : \begin{sqlCode} .. \end{sqlCode}
\newenvironment{sqlCode}%
{%
\begin{lstlisting}[%
\mainSqlListingOptions,%
frame = none,%
backgroundcolor=\color{lstBg}%
]%
}
{ \end{lstlisting} }

%Typ III : \sqlFile{caption=..,label=..}{Pfadname.sql}
\newcommand{\sqlFile}[2]%
{%
\lstinputlisting[%
#1,
\mainSqlListingOptions,%
frame = none,%
backgroundcolor=\color{lstBg}%
]%
{#2}%
}


Problem ist diese Style-definition.
Mit

\sqlInline{SELECT * FROM TABELLE}
kommt die Meldung:

Missing \endcsname inserted.
<to be read again>

Wie kann ich den Inhalt von \mainSqlListingOptions an die betreffenden Stellen kopieren? bzw. Gibt es eine Möglichkeiten für Konstanten in LaTeX?

Grüße,
derJan

mechanicus
08-03-2009, 16:40
Hallo,

es wäre schön, wenn du ein komplettes Minimalbeispiel abliefern würdest. Auf den ersten Blick solltest du es mit lstnewenvironment probieren.

Gruß
Marco

Ka55i0peia
08-03-2009, 17:08
Danke für die flotte Antwort.


Auf den ersten Blick solltest du es mit lstnewenvironment probieren.
So wie ich das der Doku entnehme, is das nur für abgesetzte Codelistings sinnvoll (via begin & end). Das ist aber weniger meiner Frage.
Das Problem mit dem Kopieren des Inhalts von \mainSqlListingOptions bleibt.


Wie kann ich, ähnlich wie Konstanten in C, den Inhalt von \mainSqlListingOptions an die betreffenden Stellen (optionen von listing-befehlen) kopieren/durch "Präprozessor" (soweit in Latex vorhanden) einen String ersetzen lassen?

(Also eher eine LaTeX-allgem. Frage.)

Auf Wunsch, komplettes Codebeispiel:


\documentclass{scrartcl}
\usepackage{listings}
\include{file_aus_meinem_ersten_Post}
\begin{document}

\sqlInline{SELECT * FROM table;} %Bsp mit Typ I

\end{document}


Problem liegt also in folgender Zeile:


\newcommand{\sqlInline}[1]%
{ \lstinline[\mainSqlListingOptions]{#1} }

voss
08-03-2009, 17:12
(Also eher eine LaTeX-allgem. Frage.)

Auf Wunsch, komplettes Codebeispiel:


Problem liegt also in folgender Zeile:


\newcommand{\sqlInline}[1]%
{ \lstinline[\mainSqlListingOptions]{#1} }


steht alles in der Doku warum das nicht geht ...

Ka55i0peia
08-03-2009, 17:19
steht alles in der Doku warum das nicht geht ...

Mir geht es um eine alternative Lösung für die Idee: Kopieren eines Strings in die Optionenliste.
(is schon rel. logisch dass es mit \befehl nicht geht)

voss
08-03-2009, 17:23
Mir geht es um eine alternative Lösung für die Idee: Kopieren eines Strings in die Optionenliste.
(is schon rel. logisch dass es mit \befehl nicht geht)

steht auch in der Doku wie man Stile definiert

Herbert

Ka55i0peia
08-03-2009, 17:34
Lösung:



\lstdefinestyle{mainSqlListingOptions}%
{%
language=SQL,%
basicstyle={\ttfamily\footnotesize},%
%..
}

\newcommand{\sqlInline}[1]%
{ \lstinline[style=mainSqlListingOptions]{#1} }


Danke für denn Tip.