«Опубликовать» в pdf - PullRequest
       26

«Опубликовать» в pdf

5 голосов
/ 15 января 2010

Используя Matlab, я хотел бы создать документ в формате pdf, обобщающий результаты нескольких экспериментов. В идеале, я бы имел одну страницу на эксперимент с двумя многопанельными рисунками и небольшим количеством текста.

Я думал, что publish.m будет правильным решением, однако публикация в pdf не поддерживает вставку разрывов страниц, и я не могу ни контролировать качество рисунка (что довольно плохо), ни размер рисунка (что означает что 2 цифры занимают всю страницу), и при этом я не мог вставить текст в верхние / нижние колонтитулы.

Как еще можно создать многостраничный PDF-файл с некоторым контролем над макетом из Matlab?

Ответы [ 6 ]

5 голосов
/ 15 января 2010

Существует набор инструментов Matlab Report Generator, который может сделать это очень легко. Конечно, это стоит денег.

Вы можете попытаться записать текст разметки из Matlab, а затем преобразовать его в PDF, используя другие инструменты. Возможные конвертеры:

  • Запишите LaTeX, затем используйте PdfLaTeX для генерации PDF
  • Запишите reStructuredText, затем используйте документы Python для создания PDF
  • Запишите DocBook XML, затем используйте любой конвертер DocBook в PDF
  • Напишите HTML, затем распечатайте его с помощью браузера или OpenOffice в PDF.

Если вы не хотите этого, взгляните на документацию Matlab. Вы можете указать размер изображения / разрешение для опубликованных рисунков, и я думаю, что есть возможность вставить разрывы строк.

1 голос
/ 03 июня 2013
  1. Вот файл example.m с графиками в цикле, которые будут опубликованы:

    x = -5 : 5
    for i=1:3
      plot(x, x .^ i );
      snapnow;
      disp('<latex>\clearpage</latex>')
    end
    
  2. Возьмите образец файла xsl-stylesheet из каталога установки MATLAB

    ...\toolbox\matlab\codetools\private\mxdom2latex.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)
    

    все готово:)

P.S. да, не задокументировано, жаль.

1 голос
/ 18 января 2010

Если вы действительно хотите контролировать создание PDF, взгляните на библиотеку Java PDF iText - вы можете довольно просто использовать библиотеки Java из MATLAB.

0 голосов
/ 19 марта 2013

Да для LaTeX, как указано выше. Если вы опубликуете уравнения, вы все равно обнаружите, что это необходимо для хорошего вывода. Как только вы идете по этому пути, следующая разметка работает хорошо. Затем я использую TexWorks, чтобы конвертировать LaTeX в PDF. Дополнительное преимущество (и реальная причина, по которой я пошел по этому пути) состояло в том, чтобы получить более привлекательные уравнения, чем я мог получить с помощью встроенного конвертера PDF. Загрузка и установка заняли час или два, пока я занимался другими делами, и он работал немного быстрее, чем при переходе прямо к pdf.

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

Примечание: какая-то ошибка, которую я больше не помню, возникла с каждым новым уравнением в Matlab 2012b (уравнение появилось, у меня просто была ошибка). Когда я переключился на LaTeX, это прекратилось, но мне нужен был файл настроек, указанный в Matlab с этими вставленными строками, чтобы получить все возможности уравнения, которые я хотел.

\ usepackage {amsmath}

\ usepackage {amssymb}

Я недостаточно знаю о LaTeX или TeXworks, чтобы знать, какие возможности эти пакеты добавили к тому, что TeXworks использует по умолчанию при публикации в pdfLaTeX + MakeIndex + BibTeX

0 голосов
/ 17 февраля 2010

В итоге я выбрал LaTeX, поскольку он дает документы гораздо более высокого качества, чем если бы я работал с HTML.

К сожалению, publish.m довольно ограничен, даже когда дело доходит до публикации в LaTeX. Например, если вы добавляете несколько фигур в цикле, невозможно установить разрывы страниц, и отрегулировать размеры фигур, чтобы получить ровно N фигур на странице, очень сложно.

Поэтому я написал функцию для прямой записи файла LaTeX (используя export_fig из обмена файлами для сохранения рисунков) и еще одну для компиляции в pdf. Таким образом, я могу легко генерировать файлы LaTeX, и у меня есть большие возможности по форматированию.

0 голосов
/ 15 января 2010

MathWorks делает панель инструментов генератора отчетов , которая позволяет вам стилизовать вывод - в основном это гораздо более изящная версия функции publish.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...