我希望使用latex来记录我的代码,但是在latex文档的开头看到所有这些模块和编译器扩展真的很烦人。有没有一些标志可以传递给lhs2TeX,以防止它在pdf中显示此代码部分,同时仍然让ghc看到代码?
这似乎是一个非常基本的功能,但我在手册中找不到它。
我希望使用latex来记录我的代码,但是在latex文档的开头看到所有这些模块和编译器扩展真的很烦人。有没有一些标志可以传递给lhs2TeX,以防止它在pdf中显示此代码部分,同时仍然让ghc看到代码?
这似乎是一个非常基本的功能,但我在手册中找不到它。
确实正确的方法是使用条件语句。
简单的选项是完全排除这种代码的lhs2TeX处理:
%if False
Everything you want LaTeX not to see. Can be
> code
as well as other stuff.
%endif
在更高级的场景中,您可能希望使用lhs2TeX预处理LaTeX源代码和Haskell代码。在这种设置下,您可以使用
%if style /= newcode
Everything you want LaTeX not to see, as above.
%else
Everything you want LaTeX to see, but not Haskell.
%endif
%if style /= newcode
%format example1 = example
%format example2 = example
%format DOTS = "\dots "
%else
%format DOTS = "undefined"
%endif
Our first attempt:
> example1 = 42 == DOTS
Now we complete the example:
> example2 = 42 == 6 * 9
--newcode
模式处理此文件,以提取预处理的Haskell代码;也可以使用--poly
模式获取通常的LaTeX代码。从http://www.haskell.org/haskellwiki/Literate_programming...
如果您想隐藏一些代码,您可以定义:
\long\def\ignore#1{}
\ignore{
\begin{code}
help = putStr "Help me, what is this LiterateProgramming thing??"
\end{code}
}
\ignore
很可能会在文档中引入虚假空格(在闭合}
之后),并且其存在仍可能以微妙的方式影响周围的文档。如果您想了解所有问题,请查看LaTeX“comment”环境及其文档。在预处理器中进行隐藏完全绕过了这些问题。 - kosmikus
%if/%else/...
应该在代码块内起作用,但事实证明它们并不起作用。 - undefined