OOrite для LaTeX, как OODraw для? - PullRequest
6 голосов
/ 17 мая 2010

Я ищу инструмент для создания одностраничных PDF-файлов. Мои потребности:

  • Можно добавить PDF / EPS / ... в качестве фона
  • Абсолютное позиционирование
  • Возможность определения таблиц, списков
  • Возможность вращать блоки
  • Достаточно простой синтаксис (будет использоваться для автоматического создания многих похожих документов)
  • Легко использовать из Python
  • Бесплатно или очень дешево

По сути, я ищу инструмент X для OODraw / CorelDraw / ... как LaTeX для OOWrite / MS Word.

Я смотрел на webkit2pdf и OODraw без головы, но оба кажутся немного излишними. XML-FO имеет некоторые ограничения, такие как невозможность предсказать, сколько страниц охватывает ваш документ. Reportlab дорогой.

Есть идеи?

Спасибо!

Ответы [ 3 ]

12 голосов
/ 17 мая 2010

Определенно PGF / Ti k Z . Пункт продажи:

http://media.texample.net/tikz/examples/PNG/rooty-helix.png

Создано этим кодом:

% Rooty helix
% Author: Felix Lindemann
\documentclass{minimal}

\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}

\pagestyle{empty}
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}

\xdefinecolor{darkgreen}{RGB}{175, 193, 36}
\newcounter{cntShader}
\newcounter{cntRoot}
\setcounter{cntShader}{20}
\def\couleur{darkgreen}

\begin{tikzpicture}
    \foreach \y in {86,38,15}{
        \setcounter{cntShader}{1}
        \coordinate (a) at (0,0);
        \coordinate (b) at (0:1);
        \foreach \x in {1,...,\y}{%
            \coordinate (c) at ($ (b)!1cm!270:(a) $);
            \begin{pgfonlayer}{background}
                \draw[fill=\couleur!\thecntShader] (a)--(b)--(c)--cycle;
            \end{pgfonlayer}
            \setcounter{cntRoot}{\x}
            \addtocounter{cntRoot}{1}
            \node[fill=white,draw,circle,inner sep=1pt] at (c)
                {$\sqrt{\thecntRoot}$};
            \coordinate (b) at (c);
            \pgfmathsetcounter{cntShader}{\thecntShader+4}
            \setcounter{cntShader}{\thecntShader}
       }
    }
    \node[fill=white,draw,circle,inner sep=1pt] at (0:1) {$\sqrt{1}$};
\end{tikzpicture}

\end{document} 

Откровенно украденный из примеров .

3 голосов
/ 18 мая 2010

Альтернативой TikZ является использование Metapost с Context: это немного более выразительный язык, чем PGF, базовый язык для TikZ, в контексте языка обработки на основе Tex Context, который лучше подходит для разметки страницы в PDF, чем Латекс или обычный текст.

Три очка в пользу Context / Metapost:

  1. Ключевое выразительное преимущество Metapost перед PGF состоит в том, что он является языком решения ограничений, который может определять пересечение кривых. Это позволяет задавать рекурсивные алгоритмы для разметки дерева, скажем, которые упаковывают деревья настолько близко, насколько это возможно, без наложения, чего нельзя сделать в PGF. См. Раздел 9 Руководство пользователя Metapost ;
  2. Слои контекста позволяют легко вставлять изображения PDF за текстом или другими изображениями PDF. См. запись о слоях в контексте вики ;
  3. Контекст позволяет указывать макет страницы относительно сеток, что на самом деле неприятно делать с латексом. См. Раздел 3.4 из Контекст: руководство .

И три в пользу Latex / TikZ:

  1. Они лучше задокументированы и более широко используются.
  2. TikZ имеет прекрасную библиотеку образцов графики.
  3. TikZ работает со всеми основными реализациями Tex, в то время как Context связан с Luatex.

Лучшее место, чтобы начать знакомство с использованием Context с Metapost - это два (длинных!) Вводных руководства Ханса Хагена: Context: экскурсия и Metafun (Metafun - это реализация метапоста с некоторыми расширениями).

0 голосов
/ 17 мая 2010

ReportLab может быть хорошим решением:

ReportLab Toolkit - это проверенный временем, сверхнадежный движок с открытым исходным кодом для программного создания PDF-документов и формирования основы RML; он также содержит библиотеку для создания независимой от платформы векторной графики. Это быстрое, гибкое, кроссплатформенное решение, написанное на Python.

http://www.reportlab.com/software/opensource/

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