2010-05-17 3 views
6

Tôi đang tìm một công cụ để tạo các tệp PDF một trang một cách độc đáo. nhu cầu của tôi là:OOWrite là để LaTeX như OODraw là để?

  • Có thể đặt một PDF/EPS/... làm nền
  • Định vị tuyệt đối
  • Có khả năng xác định các bảng, liệt kê
  • Có khả năng xoay khối
  • phải chăng dễ dàng cú pháp (sẽ được sử dụng để tự động tạo nhiều tài liệu tương tự)
  • Dễ dàng sử dụng được từ Python
  • Miễn phí hoặc rất rẻ

Về bản chất tôi đang tìm công cụ X đó là để OODraw/CorelDraw/... như LaTeX là OOWrite/MS Word.

Tôi đã xem xét webkit2pdf và một tệp văn bản không có đầu, nhưng cả hai đều có vẻ hơi quá mức. XML-FO có một số hạn chế như không thể dự đoán số lượng tài liệu mà tài liệu của bạn kéo dài. Reportlab là đắt tiền.

Bất kỳ ý tưởng nào?

Cảm ơn!

Trả lời

12

Chắc chắn PGF/TikZ. điểm bán hàng:

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

Created by mã này:

% 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} 

ngang nhiên bị đánh cắp từ examples.

+0

Bạn thậm chí có thể chính xác rằng đây vẫn là LaTeX! – Lohrun

0

ReportLab có thể là một giải pháp tốt:

Các ReportLab Toolkit là, siêu mạnh mẽ động cơ mã nguồn mở thời gian chứng minh cho programatically tạo tài liệu PDF và hình thành nên nền tảng của RML; nó cũng chứa một thư viện để tạo đồ họa vector độc lập nền tảng. Đó là giải pháp đa nền tảng nhanh, linh hoạt được viết bằng Python.

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

3

Một thay thế cho TikZ đang sử dụng Metapost với Bối cảnh: đây là một ngôn ngữ hơi biểu cảm hơn PGF, ngôn ngữ cơ sở cho TikZ, trong vòng một Tex dựa trên ngôn ngữ xử lý, bối cảnh, có nghĩa là tốt hơn thích hợp cho bố trí trang trong PDF hơn hoặc cao su hoặc Plain Tex

Ba điểm có lợi cho Context/Metapost:.

  1. Ưu điểm biểu cảm chính Metapost có hơn PGF là ngôn ngữ giải quyết khó khăn có thể xác định giao điểm của các đường cong. Điều này cho phép người ta xác định các thuật toán đệ quy để bố trí cây, nói rằng, đóng gói các cây càng chặt càng tốt mà không bị trùng lặp, cái gì đó không thể được thực hiện trong PGF. Xem phần 9 của The Metapost user manual;
  2. Các lớp của bối cảnh cho phép chèn hình ảnh PDF phía sau văn bản hoặc các hình ảnh PDF khác một cách dễ dàng.Xem the entry on Layers at the Context wiki;
  3. Bối cảnh cho phép bố cục trang được chỉ định liên quan đến lưới, điều gì đó thực sự khó chịu khi thực hiện với Latex. Xem phần 3.4 của Context: the manual.

Và ba ủng hộ Latex/TikZ:

  1. Họ đang ghi nhận tốt hơn và sử dụng rộng rãi hơn.
  2. TikZ có một thư viện đồ họa mẫu đáng yêu.
  3. TikZ hoạt động với tất cả các triển khai chính của Tex, trong khi Bối cảnh được gắn với Luatex.

Nơi tốt nhất để bắt đầu tìm hiểu về việc sử dụng bối cảnh với Metapost là hai hướng dẫn viên giới thiệu bởi Hans Hagen (dài!): Context: an excursionMetafun (Metafun là một thực hiện Metapost với một số phần mở rộng).