Следующий ответ основан на предположениях. Если бы вы предоставили MCVE - короткий .lhs
файл, который ясно демонстрирует проблему - возможно, может быть найден лучший ответ.
Я думаю, проблема в том, что lhs2TeX
не предназначен для кода Си. Он запутывается в блоке spec
, думает, что это код на Haskell, и выводит проблемные команды TeX. На самом деле, я даже не могу получить ваш опубликованный код за pdflatex
- .tex
это не работает. Вы можете использовать другой механизм для вывода кода C. Пакет minted
должен подойти.
\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}
PS: странный for
-петл может быть записан while(n-- > 0) { ... }
, нет?