5

I am having trouble commenting out lines of code in an lhs-style haskell program, so both haskell and Latex ignore the line.

When I use -- then my lh2tex will try to render the haskell code as a comment. But this often fails, because the code contains dollars and other stuff which is confusing for Latex.

When I use --%, then Latex is happy as it just ignores the comment, but haskell does not like --%. Only when I put a space after -- haskell is okay with it, but then Latex is complaining again.

4

2 回答 2

2

显然,lhs2tex 在将--其呈现为 LaTeX 之前仍会对其进行预处理,这就是为什么-- %不起作用,并且正如您在问题中指出的那样,--%Haskell 不会将其识别为评论,因为它可能是运算符。

最简单的解决方法是让它成为 Haskell 和 LaTeX 的注释行。例如,如果您有:

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

如果你想暂时错过这configureWith条线,你可以这样做:

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

% >       configureWith options setup

>       putStrLn "Some message to the user"

空行是必要的,因为在识字的 Haskell 中,代码行旁边不能有注释行。(这是为了防止简单的错误丢失初始的>。)

于 2013-07-21T17:05:22.387 回答
2

如果您使用的是 lhs2TeX(您似乎是),那么您可以使用 lhs2TeX 条件从 LaTeX 隐藏代码:

%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

正如 Daniel Wagner 在他的评论中建议的那样,另一种选择是在完整的行前面加上前缀%,将它们变成 LaTeX 评论。

lhs2TeX 将始终将注释视为 LaTeX 文本,但它还会执行预处理。因此%,在一行上使用带有注释的 a (如-- %)是行不通的,因为它%最终会出现在生成的 TeX 文件中部分相关代码的中间并触发错误。

于 2013-07-21T16:05:38.407 回答