Seite 1 von 2

Programm-code in latex Einfügen

Verfasst: Mo 4. Jun 2012, 01:13
von SDL
Hallo euch allen zusammen.

Ich bin neuling mit LaTex und möchte programmcode mit hilfe von listings einfügen. nur leider ist meine programmiersprache nich integriert und bei ca 1100 Befehlen nicht so einfach im kopf (Vorspann) unterzubringen.

Mein problem entsteht beim laden der programmlistings, wenn ich aber den code im dokument einfüge ist alles, na ja, zufriedenstellend.

Wie kann ich in den lstlang?.sty meinen programmiersyntax unterbringen und ist es überhaupt möglich? den die drei dateien werden ja generiert bei der install. Benutze MikTEX 2.9

kann mir jemand helfen, bin nicht so gut in englisch

Verfasst: Mo 4. Jun 2012, 06:11
von fitzz
Hi SDL,

um welche Programmiersprache handelt es sich?

lg
gerald[/b]

Verfasst: Mo 4. Jun 2012, 12:38
von SDL
PureBasic unter Win XP

fg

Verfasst: Mo 4. Jun 2012, 15:34
von bloodworks
Naja du kannst "Basic" nehmen und die nicht verdrahteten Keywords wirst du wohl oder übel selbst definieren müssen. So weit ich weiß unterstützt nicht mal pygmentize (also minted) diese Sprache nativ.

Verfasst: Mo 4. Jun 2012, 20:05
von SDL
genau das ist das Problem, PureBasic wird nicht unterstützt und ich möchte nicht immer im Vorspann alles definieren.

Verfasst: Mo 4. Jun 2012, 20:41
von fitzz
SDL hat geschrieben:ich möchte nicht immer im Vorspann alles definieren.
brauchst du auch nicht. Nur einmal wirst du da nicht drumherumkommen.

Schreib die Definitionen die du für PureBasic brauchst in eine separate tex-datei, z. B.: purebasiclisting.tex

Diese datei bindest du dann mit
\input{purebasiclisting}
nach dem Laden des linisngs-Paketes ein.
SDL hat geschrieben:Mein problem entsteht beim laden der programmlistings, wenn ich aber den code im dokument einfüge ist alles, na ja, zufriedenstellend.
Was ist das für ein Problem? Meine Glaskugel sagt mir das es ein Fontcode-Problem ist. Verwendest du im PurBasic-Quellcode nur ASCII-Zeichen oder auch Umlaute?

lg
gerald

Verfasst: Mo 4. Jun 2012, 22:15
von SDL
Danke für die schnelle Antwort

purebasiclisting.tex mit der selben struktur wie z.B. in der Datei lstlang1.sty
\lst@definelanguage{Purebasic}%......
nach dem Laden des linisngs-Paketes ein.
ist das kein schreibfehler? :oops:

Was ist das für ein Problem? Meine Glaskugel sagt mir das es ein Fontcode-Problem ist. Verwendest du im PurBasic-Quellcode nur ASCII-Zeichen oder auch Umlaute?
Nein, der Quellcode liegt im ASCII Format vor und ich verzichte auf Umlaute. z.B.
CompilerSelect #PB_Compiler_OS

	CompilerCase #PB_OS_Windows
		;Windows spezifischer Code
		MessageRequester("Info", "Die Kompilierung erfolgte unter Microsoft Windows.")

	CompilerCase #PB_OS_Linux
		;Linux spezifischer Code
		MessageRequester("Info", "Die Kompilierung erfolgte unter Linux.")

	CompilerCase #PB_OS_MacOS
		;MacOS spezifischer Code
		MessageRequester("Info", "Die Kompilierung erfolgte unter MacOS X")

	CompilerCase #PB_OS_AmigaOS
		;AmigaOS spezifischer Code
		MessageRequester("Info", "Die Kompilierung erfolgte unter Amiga OS.")

CompilerEndSelect

so eingefügt kein Problem aber laden der Textdatei- fehlermeldung??

Frage kann man so ohne weiteres die Datei lstlang1.sty "missbrauchen" um die {morekeywords= zu definieren?

fg
SDL

Verfasst: Di 5. Jun 2012, 07:01
von Gast
SDL hat geschrieben: Nein, der Quellcode liegt im ASCII Format vor und ich verzichte auf Umlaute. z.B.
CompilerSelect #PB_Compiler_OS

	CompilerCase #PB_OS_Windows
		;Windows spezifischer Code
		MessageRequester("Info", "Die Kompilierung erfolgte unter Microsoft Windows.")

	CompilerCase #PB_OS_Linux
		;Linux spezifischer Code
		MessageRequester("Info", "Die Kompilierung erfolgte unter Linux.")

	CompilerCase #PB_OS_MacOS
		;MacOS spezifischer Code
		MessageRequester("Info", "Die Kompilierung erfolgte unter MacOS X")

	CompilerCase #PB_OS_AmigaOS
		;AmigaOS spezifischer Code
		MessageRequester("Info", "Die Kompilierung erfolgte unter Amiga OS.")

CompilerEndSelect

so eingefügt kein Problem aber laden der Textdatei- fehlermeldung??
Du drückst Dich leider sehr unverständlich aus, so kann ich beispielsweise im Zitat mit dem Teil aber "aber" absolut nichts anfangen. Falls das ein Sprachproblem sein sollte, hat sicher niemand etwas dagegen, wenn Du auf Englisch ausweichst.

Ansonsten: Die Definition neuer Sprachen ist im listings user's guide (siehe listings.pdf) in Abschnitt 3.2 angerissen. Im reference guide (siehe ebenfalls listings.pdf) ist das Thema in Abschnitt 4.18 noch einmal zu finden. Dort sind auch Tipps wie "Where should I put my language definition?" zu finden. Näheres dazu ist angeblich im developer's guide zu finden. Diesen muss man sich allerdings ggf. selbst erzeugen. Siehe dazu "How to get the developer's guide" am Ende von listings.pdf unmittelbar vor dem Index.

BTW: Status Rückfrage ist für potentielle Helfer. Der Fragesteller selbst sollte diesen ggf. ändern (beispielsweise auf offen), sobald er die Rückfrage beantwortet hat. In meiner Antwort lautet die Rückfrage: Was soll uns der Satzteil ab "aber" in obigem Zitat sagen?.

Verfasst: Di 5. Jun 2012, 13:33
von fitzz
Gast hat geschrieben: Was soll uns der Satzteil ab "aber" in obigem Zitat sagen?.
Dass, wenn er den Quellcode in einer Listings-Umgebung eingibt, das LaTeX-Dokument ohne Fehler erstellt wird, wenn er aber eine Quellcode-datei mit dem Listingsbefehl einließt, das erstellen des LaTeX-Dokuments Fehler verursacht.
Gast hat geschrieben:wenn Du auf Englisch ausweichst
Du hast seinen ersten Post in diesem Thread gelesen? Das ist ja mit sein Problem, LaTeX-Neuling und keine guten Englischkenntnis. Deshalb ist auch der auf dem Zitat folgende Absatz nicht zielführend, weil er LaTeX-Kenntnise voraussetzt, die einem fortgeschrittenem LaTeX-Anwender zwar trivial sind, aber ein LaTeX-Neuling vor neue Probleme stellt.

SDL hat geschrieben:ist das kein schreibfehler?

Klar, sollte listings-Paket heißen.
SDL hat geschrieben:purebasiclisting.tex mit der selben struktur wie z.B. in der Datei lstlang1.sty
Nein, sondern so wie im folgenden Minimalbeispiel:
\begin{filecontents*}{sample.bas}
CompilerSelect #PB_Compiler_OS

   CompilerCase #PB_OS_Windows
      ;Windows spezifischer Code
      MessageRequester("Info", "Die Kompilierung erfolgte unter Microsoft Windows.")

   CompilerCase #PB_OS_Linux
      ;Linux spezifischer Code
      MessageRequester("Info", "Die Kompilierung erfolgte unter Linux.")

   CompilerCase #PB_OS_MacOS
      ;MacOS spezifischer Code
      MessageRequester("Info", "Die Kompilierung erfolgte unter MacOS X")

   CompilerCase #PB_OS_AmigaOS
      ;AmigaOS spezifischer Code
      MessageRequester("Info", "Die Kompilierung erfolgte unter Amiga OS.")

CompilerEndSelect
\end{filecontents*}
\begin{filecontents*}{purebasiclistings.tex}
\lstdefinelanguage[Pure]{Basic}
  {morekeywords={AppActivate,Base,Beep,Call,Case,ChDir,ChDrive,%
      Const,Declare,DefBool,DefByte,DefCur,DefDate,DefDbl,DefDec,%
      DefInt,DefLng,DefObj,DefSng,DefStr,Deftype,DefVar,DeleteSetting,%
      Dim,Do,Else,ElseIf,End,Enum,Erase,Event,Exit,Explicit,FileCopy,%
      For,ForEach,Friend,Function,Get,GoSub,GoTo,If,Implements,Kill,%
      Let,LineInput,Lock,Lset,MkDir,Name,Next,OnError,On,Option,%
      Private,Property,Public,Put,RaiseEvent,Randomize,ReDim,Rem,%
      Reset,Resume,Return,RmDir,Rset,SavePicture,SaveSetting,%
      SendKeys,SetAttr,Static,Sub,Then,Type,Unlock,Wend,While,Width,%
      With,Write,%
      Define},% statements
      alsoletter={\#},%
  morekeywords=[2]{\#PB_Compiler_OS,\#PB_OS_Windows,\#PB_OS_Linux,%
      \#PB_OS_MacOS,\#PB_OS_AmigaOS},%Reservierte Konstanten
  keywordstyle=[2]{\color{red!80!black}}, %
  morekeywords=[3]{CompilerSelect,CompilerCase,CompilerEndSelect,%
      CompilerDefault,CompilerError,EnableExplicit,DisableExplicit,%
      CompilerIf,CompilerElse,CompilerEndIf,EnableASM,DisableASM},% Compiler direktiven
  keywordstyle=[3]{\color{red}}, %
  morekeywords=[4]{MessageRequester},%Funktionen
  identifierstyle={\color{blue}\textbf},%
  commentstyle={\color{gray!80!}\itshape},%
  stringstyle={\color{green!60!black}},%
  sensitive=false,%
  keywordcomment=rem,%
  comment=[l]{;},%
  string=[s]{'}{'},%
  morestring=[s]{"}{"},%
}[keywords,comments,strings,keywordcomments]
\endinput
\end{filecontents*}

\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{listings}
\input{purebasiclistings}

\begin{document}
\begin{lstlisting}[language={[Pure]Basic}]

CompilerSelect #PB_Compiler_OS

   CompilerCase #PB_OS_Windows
      ;Windows spezifischer Code
      MessageRequester("Info", "Die Kompilierung erfolgte unter Microsoft Windows.")

   CompilerCase #PB_OS_Linux
      ;Linux spezifischer Code
      MessageRequester("Info", "Die Kompilierung erfolgte unter Linux.")

   CompilerCase #PB_OS_MacOS
      ;MacOS spezifischer Code
      MessageRequester("Info", "Die Kompilierung erfolgte unter MacOS X")

   CompilerCase #PB_OS_AmigaOS
      ;AmigaOS spezifischer Code
      MessageRequester("Info", "Die Kompilierung erfolgte unter Amiga OS.")

CompilerEndSelect
\end{lstlisting}

\lstinputlisting[language={[Pure]Basic}]{sample.bas}

\end{document}
Lass das Minimalbeispiel einmal durchlaufen, es erstellt zwei Dateien einmal die "purebasiclistings.tex" und eine "sample.bas" mit dem Beispielquellcode.

Wenn das nicht durchläuft, poste die Fehlermeldungen, sonst füge vor
\end{document}
mit
\lstinputlisting[language={[Pure]Basic}]{<pfad-zu-deiner-basicdatei>}
eine Quellcodedatei von dir ein, sollten dann Fehler auftreten, poste sie hier.
SDL hat geschrieben:Nein, der Quellcode liegt im ASCII Format vor und ich verzichte auf Umlaute.
Auch in den Strings?
SDL hat geschrieben:Frage kann man so ohne weiteres die Datei lstlang1.sty "missbrauchen" um die {morekeywords= zu definieren?
Klar, wenn man Sysyphos heißt, bei jedem neuen Paket-Update wird's schön überschrieben.

lg
gerald

Verfasst: Di 5. Jun 2012, 19:23
von SDL
Ich bedanke mich bei allen für die Antworten.
Ich werde erst einmal die Vorschläge umsetzen, aber ich denke das mein problem gelöst wird. jetzt liegt es nur an mir.
werde die purebasic.tex, wenn es geht, zur verfügung stellen

danke noch einmal für die promte hilfe

mfg
SDL