我的识字haskell文件中有这段代码
\end{code}
\paragraph{Valorização}
Codigo em C
\begin{spec}
double co(double x, int n){
double a = 1;
double b = -1 * x * x / 2;
double c = 12;
double d = 18;
for(; n > 0; n--){
a = a + b;
b = b * (-1 * x * x) / c;
c = c + d;
d = 8 + d;
}
return a;
}
\end{spec}
\subsection*{Problema 4}
发生的事情是,当使用lhs2tex和pdflatex时,spec块中的内容将被完全忽略,并且转发之后的所有内容(例如它前面都有一个制表符)...也许这是常见的东西吗?我不习惯这个...第一次使用它
顺便说一句,如果我删除spec块,则其他所有文件的格式都正确
答案 0 :(得分:0)
以下答案基于推测。如果您提供一个MCVE(简短的Word 97-2003 Document (*.doc)
文件来清楚地说明问题),则可能会找到更好的答案。
我认为问题在于Word Document (*.docx)
不适合C代码。 .lhs
块使它感到困惑,认为它是Haskell代码,并输出有问题的TeX命令。实际上,我什至无法获得您发布的代码经过lhs2TeX
的原因-spec
太破了。您可以使用其他机制来输出C代码。 minted
软件包应该可以。
pdflatex
PS:奇怪的.tex
循环可以写成\documentclass{article}
%include lhs2TeX.fmt
\usepackage{minted}
\setlength{\parindent}{0pt}
\begin{document}
Some C code:
\begin{minted}{c}
double co(double x, int n){
double a = 1;
double b = -1 * x * x / 2;
double c = 12;
double d = 18;
for(; n > 0; n--){
a = a + b;
b = b * (-1 * x * x) / c;
c = c + d;
d = 8 + d;
}
return a;
}
\end{minted}
It can be directly translated into Haskell:
\begin{code}
co :: Double -> Int -> Double
co x = worker 1 (-1 * x * x / 2) 12 18
where worker a _ _ _ 0 = a
worker a b c d n = worker (a + b) (b * (-1 * x * x) / c) (c + d) (8 + d) (n - 1)
\end{code}
As you can see, \textit{Haskell} code passes through just fine.
\end{document}
,不是吗?