2013-07-21 6 views
5

Ich habe Probleme, Zeilen des Codes in einem lhs-Stil haskell Programm zu kommentieren, so ignorieren sowohl Haskell als auch Latex die Linie.Wie man Zeilen im literate haskell auskommentiert

Wenn ich -- verwende, dann wird mein lh2tex versuchen, den Haskell-Code als Kommentar zu rendern. Aber das scheitert oft, weil der Code Dollar und andere Sachen enthält, die für Latex verwirrend sind.

Wenn ich --% benutze, dann ist Latex glücklich, da es den Kommentar einfach ignoriert, aber harkell mag nicht --%. Erst wenn ich nach -- einen Platz einlege, ist Haskell in Ordnung, aber dann beschwert sich Latex wieder.

+1

Warum sollte LaTeX sich über '-%' beschweren? Sie erhalten einen N-Gedankenstrich oder vielleicht zwei benachbarte Bindestriche in dieser Zeile, aber der Rest der Zeile sollte als Kommentar betrachtet und von LaTeX ignoriert werden. –

+2

Können Sie nicht einfach die ganze Zeile mit '%' (oder vielleicht '%') voranstellen? Dadurch wird es zu einem LaTeX-Kommentar, und da die Zeile nicht mehr mit '>' beginnt, wird es auch als literarischer Kommentar betrachtet. Ich habe es jedoch nicht getestet. –

+0

@DanielWagner Ja, aber denken Sie daran, dass Sie eine Leerzeile zwischen Zeilen einfügen müssen, die Code sind (beginnend mit>), und nicht leeren Nicht-Code Zeilen. – AndrewC

Antwort

2

Wenn Sie mit lhs2tex (die Sie zu sein scheinen), dann können Sie Code aus LaTeX verstecken, indem lhs2tex conditionals mit:

%if False 

> code seen by Haskell but not typeset 
> -- comment that is not typeset 

%endif 

> code seen by Haskell and typeset 
> -- comment that will be typeset 

Als Daniel Wagner in seinem Kommentar schon sagt, eine andere Option Präfix vervollständige die Zeilen mit %, um sie zu LaTeX-Kommentaren zu machen.

lhs2TeX behandelt Kommentare immer als LaTeX-Text, führt aber zusätzlich eine Vorverarbeitung durch. Also mit % auf eine Zeile mit einem Kommentar (wie in -- %) ist nicht gehen zur Arbeit, weil die % wird in der Mitte der teilweise relevanten Code in der generierten TeX-Datei und Trigger-Fehler enden.

+0

Es wäre hilfreich, wenn jemand, der diese Antwort abgelehnt hat, Feedback geben könnte, damit ich in Zukunft bessere Antworten geben kann. – kosmikus

+0

% wenn False gut zu wissen ist. Es verhält sich so, wie du es sagst. Inzwischen habe ich eine andere Möglichkeit gefunden. Wenn das Kommentar-Paket geladen ist, ersetze ich mein \ begin {code} mit \ begin {comment} und \ end entsprechend. Dies ist eine gute Möglichkeit, ganze Textblöcke zu kommentieren. Für einzelne Zeilen beantwortet deine Umfrage meine Frage. –

2

Offenbar lhs2tex wird vorverarbeiten noch etwas folgenden --, bevor es als LaTeX-Rendering, weshalb -- % nicht funktioniert, und wie Sie in Ihrer Frage darauf hin, ist --% nicht als Kommentar von Haskell anerkannt, weil es könnte ein Operator sein.

Die einfachste Problemumgehung dafür ist, es zu einer Kommentarzeile für Haskell und LaTeX zu machen. Zum Beispiel, wenn Sie hatte:

> main = do 
>  options <- getOptions 
>  setup <- fmap readSetup $ readFile "setup.dat" 
>  configureWith options setup 
>  putStrLn "Some message to the user" 

Wenn Sie die configureWith Linie vorübergehend verzichten wollte, können Sie dies tun:

> main = do 
>  options <- getOptions 
>  setup <- fmap readSetup $ readFile "setup.dat" 

% >  configureWith options setup 

>  putStrLn "Some message to the user" 

Die Leerzeilen sind notwendig, weil in belesen Haskell können Sie nicht habe eine Kommentarzeile neben einer Codezeile. (Dies dient dazu, einfache Fehler zu vermeiden, die darin bestehen, die ursprüngliche > zu verfehlen.)