私は現在、たくさんの小さなレポートを書いています。それらのほとんどは、いくつかのグラフと説明的なコメントを含む単なる値のダンプです。
レポートを簡単な形式(できればマークダウン/ラテックスとhaskell)で記述し、元のファイルで行われた計算の結果を含む出力形式(できればpdf)に変換できる文芸的プログラミング環境はありますか?
Haskellが文芸的プログラミングをサポートしていることは知っていますが、出力(および場合によっては画像全体)をキャプチャできるとは思いません。
私は現在、たくさんの小さなレポートを書いています。それらのほとんどは、いくつかのグラフと説明的なコメントを含む単なる値のダンプです。
レポートを簡単な形式(できればマークダウン/ラテックスとhaskell)で記述し、元のファイルで行われた計算の結果を含む出力形式(できればpdf)に変換できる文芸的プログラミング環境はありますか?
Haskellが文芸的プログラミングをサポートしていることは知っていますが、出力(および場合によっては画像全体)をキャプチャできるとは思いません。
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コマンドを生成する上記のようなものです。
チャートの代わりにダイアグラムを使用したい場合は、このブログ投稿で説明されているdiagrams-builderがお勧めです。マークダウンとLaTeXで同様に機能します。
http://code.google.com/p/nano-lp/を試すことができます。これは、Markdown / Multimarkdownおよびその他の軽量マークアップ(OpenOfficeも含む)をサポートし、複数のファイルを1つに簡単に含めることができます。OpenOfficeを使用すると、たとえば、結果のファイルをPDFにエクスポートできます。また、AsciidocとTeX / LaTeXがサポートされているため、これらを使用してPDFを作成することもできます
パーティーに(非常に)遅れてすみません。答えは、この質問への将来の訪問者のための参照としてのみ提供されます。
Org-modeは、優れた文芸的プログラミング環境を提供します。それ自体は宇宙ですが、調べる価値は十分にあります。コードの処理方法に関する詳細については、次のリンクを参照してください。
Haskellもサポートされていることがよくあります。そうでない場合、このコメントは不要になります。フォーマットはMarkdownではありませんが、Org-modeには非常に簡単なマークダウン方法があります。