2010-01-15 137 views
5

使用Matlab,我想創建一個總結幾個實驗結果的pdf文檔。理想情況下,我會爲每個實驗設置一個頁面,其中包含2個多面板數字和一些文本。「Publish」to pdf

我認爲publish.m是要走的路,但是,發佈到pdf不支持插入分頁符,我既不能控制圖形質量(這是相當糟糕的),也不是數字大小(這意味着2個數字佔據整個頁面),我也不能將文本填充到頁眉/頁腳中。

我怎麼能創建一個多頁PDF與一些控制從Matlab內的佈局?

回答

5

存在Matlab報告生成器工具箱,它可以很容易地做到這一點。 當然它花了一些錢。

您可以嘗試從Matlab寫出一些標記文本,然後使用其他工具將其轉換爲PDF。可能的轉換器:

  • 寫出膠乳中,然後用PdfLaTeX生成PDF
  • 寫下新結構化,然後使用Python docutils的生成PDF
  • 寫出來的DocBook XML,然後使用任何DocBook到PDF轉換器
  • 寫出HTML,然後用瀏覽器或OpenOffice將其打印爲PDF。

如果你不想要這個,看看Matlab文檔。 您可以指定發佈圖形的圖像大小/分辨率,我認爲存在插入換行符的可能性。

+0

謝謝您的建議。當然,報表生成器工具箱恰好是我無法訪問的那些工具箱之一。 不幸的是,這是不可能發佈到PDF指定圖像尺寸/分辨率和換行符,因爲我在這個問題提到的(看看Matlab的文檔和服務請求確認)。 我想這將是學習足夠乳膠做出一個很好的文件,或者使用發佈到HTML使一些快之間難以取捨。 – Jonas 2010-01-15 18:57:01

+0

在M-File註釋中使用預格式化文本(單元格>插入文本標記>預格式化文本)怎麼辦?它支持換行符。 爲了能夠定義圖像的大小,第一使用'打印-dpng'命令(見'幫助print')來創建一個單獨的圖像文件,然後在您的發佈M-文件生成的文件(<>)。您可以指定選項來定義打印圖像的大小。 – 2010-01-15 20:09:49

+0

對不起,我的意思是'分頁符',而不是'換行符'。 – Jonas 2010-02-17 03:35:36

0

MathWorks做了一個Report Generator toolbox,它允許你設置你的輸出樣式 - 基本上它是publish函數的一個更有趣的版本。

1

如果你真的想要控制pdf的生成,看看iText Java PDF library - 你可以很容易地從MATLAB使用Java庫。

0

最後,我使用了LaTeX,因爲它提供的文檔質量遠高於通過HTML訪問的文檔。

不幸的是,即使涉及發佈到LaTeX,publish.m也相當有限。例如,如果在循環中添加多個數字,則不可能設置分頁符,並且調整圖形大小以在頁面上精確地顯示N個數字是非常困難的。

因此,我寫了一個函數來直接編寫LaTeX文件(使用export_fig從文件交換中保存數字),另一個編譯爲pdf。 通過這種方式,我可以輕鬆生成LaTeX文件,並且在格式化方面我擁有很多功能。

+1

看一看https://github.com/Jubobs/pretty_publish – Jubobs 2014-08-07 16:45:52

0

對於LaTeX是的,如上所述。如果您發佈方程式,您最終會發現對於良好輸出而言必要的。一旦你走上了這條路,下面的標記效果很好。然後,我使用TexWorks將LaTeX轉換爲pdf。一個副作用(以及我走上這條路的真正原因)是要獲得比我內置的pdf轉換器更好的方程。下載和安裝需要一兩個小時,而我在做其他事情時,運行速度要比直接閱讀pdf時要快一些。

%% 
% <latex> 
% \clearpage 
% </latex> 

旁註:一些錯誤,我不記得了與在Matlab 2012B每個新方程上來(等式出現了,我只是有一個錯誤)。當我切換到LaTeX時,這停止了,但我需要一個在Matlab中指定的首選項文件,插入這些行以獲得我想要的所有等式功能。

\ usepackage {} amsmath

\ usepackage {} amssymb

我不知道有足夠的瞭解乳膠或TEXworks的知道添加到發佈到pdfLaTeX當什麼TEXworks的默認情況下使用什麼樣的能力,這些包+ MakeIndex +中文提供

1
  1. 這是一個陰謀文件example.m在循環中被公開:

    x = -5 : 5 
    for i=1:3 
        plot(x, x .^ i); 
        snapnow; 
        disp('<latex>\clearpage</latex>') 
    end 
    
  2. 從MATLAB安裝目錄

    ...\toolbox\matlab\codetools\private\mxdom2latex.xsl 
    

    採取抽樣XSL樣式表文件和明年將它複製到你的example.m文件,比方說,作爲custom_mxdom2latex.xsl。

  3. 查找您的自定義的.xsl文件中的以下邪惡線,破壞的輸出順序:

    <xsl:apply-templates select="text"/> 
    <xsl:apply-templates select="mcode"/> 
    <xsl:apply-templates select="img"/> 
    <xsl:apply-templates select="mcodeoutput"/> 
    
  4. 與此更換線路:

    <xsl:apply-templates select="text|mcode|img|mcodeoutput"/> 
    
  5. 發佈:

    opts.format='latex';opts.stylesheet='custom_mxdom2latex.xsl' 
    publish('example', opts) 
    

    大功告成:)

附:是的,沒有記錄,這是一個遺憾。

+0

看起來有前途的! – Jonas 2013-06-03 16:49:38

+0

該死的,我剛剛被拋出MATLAB,並且在我對R/Sweave的積極體驗之後,它的報告一直很糟糕...... – vak 2013-06-03 17:07:28