PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : klammer am zeilenanfang



headmyshoulder
07-10-2007, 16:26
Moin,

ich schreib gerade eine Dokumentation für ein Softwarepaket und will eine Klammer am Zeilenanfang setzen. Der Code dafür sieht in etwa so aus:


{\ttfamily \raggedright \small
[section1]\\
value1\ =\ 10\\
value2\ =\ 4.565\ \\
value3\ =\ Hello\\
\ \\
[section2]\\
value1\ =\ 1\\
param1\ =\ Huhu\\
\ \\
}

Ich bekomme dann in der Zeile mit [section2] folgende Fehlermeldung:


Missing number, treated as zero

In der Zeile, will Latex sozusagen nicht, dass ich eine Klammer am Zeilenanfang einfüge. Wenn ich die Klammern da entferne, geht alles gut und wenn ich ein Leerzeichen (\ ) vor die Klammer setze geht latex da auch rüber, sieht dann aber doof aus.

Hat einer ne Idee, was man da machen kann?

localghost
07-10-2007, 17:00
Ich vermute mal, dass du den Backslash "\" als Zeichen dargestellt haben möchtest. Er ist jedoch für LaTeX reserviert, weil mit ihm ja alle Befehle eingeleitet (und manchmal auch beendet) werden. Da gibt es mehrere Möglichkeiten. Du kannst die verbatim-Umgebung benutzen, wobei aber alle Steuerungsbefehle wirkungslos bleiben und daher außerhalb dieser Umgebung geschrieben werden müssen. Da Du ohnehin die Schrift auf Schreibmaschinenstil umstellst (typewriter mit \ttfamily), ginge es so. Du kannst auch alle "\", die keinen Befehl einleiten, ersetzen. Dazu ist vielleicht das Paket textcomp (http://dante.ctan.org/CTAN/help/Catalogue/entries/textcomp.html) notwendig.

{
\ttfamily\raggedright\small
[section1]\\
value1\textbackslash\ =\textbackslash\ 10\\
value2\textbackslash\ =\textbackslash\ 4.565\textbackslash\ \\
value3\textbackslash\ =\textbackslash\ Hello\\
\textbackslash\ \\
[section2]\\
value1\textbackslash\ =\textbackslash\ 1\\
param1\textbackslash\ =\textbackslash\ Huhu\\
\textbackslash\ \\
}
Handelt es sich bei dem "Code" um eine existierende Programmiersprache, ist das Paket listings (http://dante.ctan.org/CTAN/help/Catalogue/entries/listings.html) wohl besser geeignet.

MfG und einem herzlichen Willkommen an Board
Thorsten

headmyshoulder
07-10-2007, 17:14
Mit dem Backslashzeichen habe ich keine Problem (zumindest noch nicht^^). Was mir Probleme macht ist die eckige Klammer "[" vor "section2". Das mag latex irgendwie nicht und da kommt auch die Fehlermeldung. Soweit ich das überblicken kann, hat Latex ein Problem damit, wenn ne Klammer am Zeilenanfang steht.

Wegen dem listings paket: Ich hab damit auch schonmal rumgespielt, hab mich dann aber für die {\\ttfamily \raggedright }} variante entschieden. Es gibt da ein kleines Tool cpp2latex (http://www.arnoldarts.de/drupal/?q=Cpp2LaTeX) was den Quellcode direkt in latex konvertiert und das ist immo die einfachste Wahl für mich.

Liebe Grüsse

marius79
07-10-2007, 17:26
Hallo,

so funktioniert's bei mir:

\documentclass{article}
\begin{document}
{\ttfamily \raggedright \small
[section1]\\
value1\ =\ 10\\
value2\ =\ 4.565\ \\
value3\ =\ Hello\\
\ \\[0pt]
[section2]\\
value1\ =\ 1\\
param1\ =\ Huhu\\
\ \\
}
\end{document}
Ich könnte mir vorstellen, dass latex die eckigen Klammern und das "section2" darin als optionalen Zeilenabstand nach dem "\\" interpretiert, und da steht dann eben bei Dir keine Maßangabe. Wenn Du den Abstand wie im Beispiel explizit als 0pt (oder was auch immer) angibst, kommen keine Missverständnisse auf.

Grüße
marius

headmyshoulder
07-10-2007, 17:28
Super Tip Marius, funtioniert bei mir auch besten und liefert das gewünschte Ergebnis.

Vielen Dank.

localghost
07-10-2007, 17:30
Jetzt verstehe ich das erst richtig. War beim ersten Mal etwas unaufmerksam. Das Problem ist nicht die Klammer selbst, sondern eine in diesem Fall unglückliche Kombination.

{
\ttfamily\raggedright\small
[section1]\\
value1\ =\ 10\\
value2\ =\ 4.565\ \\
value3\ =\ Hello\\
\ \\
[section2]\\
value1\ =\ 1\\
param1\ =\ Huhu\\
\ \\
}
Nach dem Beenden einer Zeile mit \\ kann optional eine Länge in eckigen Klammern angegeben werden, um den Abstand zur darauf folgenden Zeile zu vergrößern. Da dies hier nicht in den folgenden eckigen Klammern erfolgt, beschwert sich der Compiler (zu Recht). Vielleicht kannst Du das mit einem \newline an Stelle von \\ umgehen. Die Konvertierung des Tools cpp2latex ist da wohl fehlerhaft.

Anmerkung:
Etwas zu spät, aber auch eine Möglichkeit.

headmyshoulder
07-10-2007, 17:37
Joa, ein \newline und dann ohne explite Abstandsangabe tuts auch:


{
\ttfamily\raggedright\small
[section1]\\
value1\ =\ 10\\
value2\ =\ 4.565\ \\
value3\ =\ Hello\\
\ \newline
[section2]\\
value1\ =\ 1\\
param1\ =\ Huhu\\
\ \\
}

Ich habs noch nicht gewusst, dass man nach einem \\ noch einen optionalen Zeilenabstand angeben kann. Da hat cpp2latex wohl einen kleine Bug^^, aber so oft wird das Tool wahrscheinlich auch nicht mit einem "[" am Zeilenanfang konfrontiert, ich kenn zumindest keinen C/C++ Code wo sowas vorkommt und ich hab cpp2latex gerade auch ein bisschen zweckentfremdet. :D

headmyshoulder
07-10-2007, 17:48
Noch ne kurze andere Frage: Kann man hier ein Thema als gelöst markieren?