2013-07-21 12 views
5

Ho difficoltà a commentare le righe di codice in un programma haskell in stile lhs, quindi sia haskell che latex ignorano la riga.Come commentare le righe in literate haskell

Quando utilizzo --, il mio lh2tex proverà a eseguire il rendering del codice haskell come commento. Ma questo spesso fallisce, perché il codice contiene dollari e altre cose che sono fonte di confusione per Latex.

Quando uso --%, quindi Latex è felice in quanto ignora il commento, ma haskell non mi piace --%. Solo quando metto uno spazio dopo l'-- haskell va bene, ma poi Latex si lamenta di nuovo.

+1

Perché mai LaTeX si lamenterebbe di '-%'? Avresti ottenuto un trattino basso, o forse due trattini-meno adiacenti su quella linea, ma il resto della linea dovrebbe essere considerato un commento e ignorato da LaTeX. –

+2

Non puoi semplicemente prefisso l'intera riga con '%' (o forse '%')? Questo lo renderà un commento LaTeX, e dato che la riga non inizia più con '>', sarà considerato anche un commento letterale. Non l'ho provato, però. –

+0

@DanielWagner Sì, ma ricorda che devi mettere una riga vuota tra le righe che sono codice (che iniziano con>) e le righe non di codice non vuote. – AndrewC

risposta

2

Se stai usando lhs2TeX (che ti sembra di essere), allora si può nascondere il codice da LaTeX usando condizionali lhs2TeX:

%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 

Come suggerisce Daniel Wagner nel suo commento, un'altra opzione è quella di anteporre linee complete con % per trasformarle in commenti LaTeX.

lhs2TeX tratterà sempre i commenti come testo LaTeX, ma eseguirà anche la pre-elaborazione. Quindi, utilizzando -- %, una riga con un commento (come in -- %) è non, perché lo % terminerà nel mezzo del codice parzialmente pertinente nel file TeX generato e gli errori di trigger.

+0

Sarebbe utile se chi ha downvoted questa risposta potesse fornire un feedback in modo da poter fornire risposte migliori in futuro. – kosmikus

+0

% se False è buono a sapersi. Si comporta come dici tu. Nel frattempo ho trovato un'altra possibilità. Con il pacchetto di commenti caricato, sostituisco il mio \ begin {codice} con \ begin {comment} e \ end di conseguenza. Questo è un buon modo per commentare interi blocchi di testo. Per le linee singole la tua congestione risponde alla mia domanda. –

2

A quanto pare, sarà ancora lhs2tex preprocessare nulla seguente -- prima del rendering come LaTeX, che è il motivo per cui -- % non funziona, e come fai notare nella sua interrogazione, --% non è riconosciuto come un commento di Haskell, perché potrebbe essere un operatore.

Il modo più semplice per ovviare a questo problema è renderlo una riga di commento sia per Haskell che per LaTeX. Ad esempio, se si ha:

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

Se si voleva perdere temporaneamente fuori linea configureWith, si potrebbe fare questo:

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

% >  configureWith options setup 

>  putStrLn "Some message to the user" 

Le righe vuote sono necessarie perché in alfabetizzati Haskell non si può avere una riga di commento accanto a una riga di codice. (Ciò per evitare errori semplici in mancanza del > iniziale.)

Problemi correlati