6

私は現在、たくさんの小さなレポートを書いています。それらのほとんどは、いくつかのグラフと説明的なコメントを含む単なる値のダンプです。

レポートを簡単な形式(できればマークダウン/ラテックスとhaskell)で記述し、元のファイルで行われた計算の結果を含む出力形式(できればpdf)に変換できる文芸的プログラミング環境はありますか?

Haskellが文芸的プログラミングをサポートしていることは知っていますが、出力(および場合によっては画像全体)をキャプチャできるとは思いません。

4

5 に答える 5

15

lhs2TeXプリプロセッサは、GHCiを介したHaskell式の評価をサポートしています。最小限の例を次に示します。

\documentclass{article}

%include polycode.fmt
%options ghci

\begin{document}

Running

> fmap (+1) [1..10]

yields \eval{fmap (+1) [1..10]}.

\end{document}

これにより、コマンドが入力内に[2,3,4,5,6,7,8,9,10,11]ある場所にリストを含む出力が生成されます。\eval

現在のファイルから定義を参照できます。つまり、この\eval関数は、現在のファイルをにロードしghci、そのコンテキストで式を評価することによって機能します。

\performと同じことをするものもあり\evalますが、出力はHaskellコードの一部としてではなく、LaTeXコードの一部として表示されます。したがって、出力ドキュメントの一部を生成するHaskell関数を書くことができます。

そうは言っても、lhs2TeXのこの機能について改善できることがたくさんあり、実装はかなりハックです。

編集:コメントから結論として、目標はチャートライブラリによって生成された画像を含めることです。これを実現する方法を示す概念実証ドキュメントは次のとおりです。

\documentclass{article}

\usepackage{graphicx}

%include polycode.fmt
%options ghci

%if style == newcode
(Stuff here will not be typeset by LaTeX, but seen by Haskell.)

> import Data.Accessor
> import Graphics.Rendering.Chart
>
> renderAndInclude :: Renderable a -> FilePath -> IO ()
> renderAndInclude r filename = do
>   renderableToPDFFile r 200 200 filename
>   putStrLn $ "\\includegraphics{" ++ filename ++ "}"

%endif

%format ^= = "\mathbin{{}^\wedge\!\!=}"

\begin{document}

The image description

> image :: Renderable ()
> image  =  toRenderable
>        $  layout1_title  ^=  "Test"
>        $  layout1_plots  ^=  [ Left (toPlot plot) ]
>        $  defaultLayout1
>   where
>     plot   =  plot_lines_values ^= [[ (x, sin x) | x <- [0, 0.01 .. 10 :: Double] ]]
>            $  defaultPlotLines

yields the following output:

\perform{renderAndInclude image "image.pdf"}.

\end{document}

作成する必要のある中央ヘルパー関数renderAndIncludeは、実際のレンダリングを実行し、結果をファイルに書き込み、ファイル\includegraphicsを読み戻すLaTeXコマンドを生成する上記のようなものです。

于 2013-01-30T18:05:46.743 に答える
3

Haskellを絶対に持っている必要がない場合は、SweaveRで残りを取得できます。基本的に、Rコードが埋め込まれたLaTeXドキュメントを作成します。最終的なPDF出力に、コード、結果(プロットを含む)、またはその両方を含めることを選択できます。Knitrは、Sweaveの最近の拡張(または簡略化?)です。

于 2013-01-30T17:58:15.623 に答える
2

チャートの代わりにダイアグラムを使用したい場合は、このブログ投稿で説明されているdiagrams-builderがお勧めです。マークダウンとLaTeXで同様に機能します。

于 2013-01-31T08:35:52.750 に答える
0

http://code.google.com/p/nano-lp/を試すことができます。これは、Markdown / Multimarkdownおよびその他の軽量マークアップ(OpenOfficeも含む)をサポートし、複数のファイルを1つに簡単に含めることができます。OpenOfficeを使用すると、たとえば、結果のファイルをPDFにエクスポートできます。また、AsciidocとTeX / LaTeXがサポートされているため、これらを使用してPDFを作成することもできます

于 2013-02-14T15:31:44.227 に答える
0

パーティーに(非常に)遅れてすみません。答えは、この質問への将来の訪問者のための参照としてのみ提供されます。

Org-modeは、優れた文芸的プログラミング環境を提供します。それ自体は宇宙ですが、調べる価値は十分にあります。コードの処理方法に関する詳細については、次のリンクを参照してください。

Haskellもサポートされていることがよくあります。そうでない場合、このコメントは不要になります。フォーマットはMarkdownではありませんが、Org-modeには非常に簡単なマークダウン方法があります。

于 2013-08-26T16:29:58.400 に答える