2009-09-09 17 views
5

Necesito hacer algunas fotos para mis documentos LaTeX, y he encontrado que PostScript hecho a mano parece ser una buena opción (quiero hacer cosas programáticamente, necesito funciones matemáticas, etc.). También probé TikZ, pero me pareció demasiado complicado y difícil de usar.¿Alguna buena biblioteca de dibujo PostScript?

Sin embargo, usar PostScript estándar simple es un poco doloroso ya que no hay realmente ninguna función estándar para dibujar formas (por ejemplo, ni siquiera rectángulos).

¿Hay alguna biblioteca PostScript que incluya funciones para formas comunes y haga la vida un poco más fácil? Me parece que este problema debería ser bastante común.

¿O debería omitir PostScript y pasar a algún sistema superior? ¿Cúal?

+0

PGF/TikZ es mi humilde opinión muy fácil de usar y tiene grandes bibliotecas que le permiten crear grandes dibujos con solamente un par de líneas. – f3lix

Respuesta

6

Algunas personas y muchos controladores PostScript definen su propio conjunto de procedimientos para dibujar formas. Un controlador PostScript puede emitir los siguientes accesos directos:

/bd{bind def} bind def 
/cp{closepath}bd 
/gs{gsave}bd 
/gr{grestore}bd 
/m{moveto}bd 
/rm{rmoveto}bd 
/l{lineto}bd 
/rl(rlineto}bd 
/s{stroke}bd 
/f{fill}bd 
/sf{gs s gr f}bd 
/xx{exch}bd 

/rect {4 2 roll m 1 index 0 rl 0 xx rl neg 0 rl cp} bd 

Entonces, un rectángulo se elaborará como esto:

0 0 100 100 rect sf 

La burocracia que conlleva esto hace que PostScript particularmente difícil de tratar. MetaPost puede ser un mejor ajuste si sus dibujos se generan programáticamente/matemáticamente. MetaPost genera PostScript encapsulado (que puede incluir en su documento LaTeX) pero es más adecuado para dibujar imágenes con definiciones algebraicas.

+0

Sí, definir mis propias funciones para las formas es lo que hice. Solo tengo una mala sensación de que estoy reinventando la rueda, ya que debe haber miles de implementaciones diferentes de rectángulos por ahora. Tendría sentido que alguien hubiera empaquetado sus propias funciones y las haya puesto a disposición de otros. Gracias por la sugerencia de MetaPost. Parece bastante interesante, me llevó a una asíntota que parece ser una versión modernizada de MetaPost. – pafcu

1

Me gusta usar matplotlib. Puede generar postscript y PDF directamente, está en python, y también puede hacer tramas bastante sofisticadas (de ahí su nombre). Si quiere hackear PostScript directamente, podrá usar psticks en LaTeX, pero necesitará ejecutarlo todo a través de dvi2ps y luego ps2pdf para crear archivos PDF. ¿Realmente quieres PostScript o PDF? Creo que quieres PDF, ¿verdad?

+0

Sí, los archivos PDF son mi objetivo final. La única razón por la que uso PostScript es porque es una buena combinación de dibujo y matemática. No estoy seguro de que matplotlib sea lo que estoy buscando, ya que lo que quiero hacer es dibujar figuras que solo se generan matemáticamente en parte. Necesito cajas y flechas y posiblemente formas arbitrarias que pueden ser difíciles de hacer con una biblioteca destinada a las funciones de trazado. Además, el código de Python tiende a ser bastante detallado. Sin embargo, voy a echar un vistazo más de cerca a matplotlib también. – pafcu

+0

Si solo necesita cuadros, flechas y formas arbitrarias, debe usar graphviz y obtener el diseño automático. – vy32

+0

Necesito específicamente el diseño manual. Graphviz, como su nombre lo indica, es para gráficos. Quiero dibujar figuras en general. – pafcu

1

OK, he decidido que Asymptote es lo mejor desde el pan rebanado. Maneja muy bien los gráficos y las figuras arbitrarias, y tiene una gran cantidad de módulos de extensión (incluida la compatibilidad MetaPost si te importa). Además, escribe texto usando LaTeX, que es increíblemente genial. Como una ventaja adicional, incluso se imprime directamente en PDF (o EPS).

Aún así creo que es un poco triste que no haya buenas bibliotecas de rutinas para la buena PostScript.

0

Genera SVG, luego utiliza algo como iText y/o Inkscape para convertir programáticamente a PDF/PS. Construí una pila de publicación de esta manera y funcionó muy bien.

1

He usado Asymptote (para gráficos), pero me resultó tedioso aprender otro idioma personalizado. Si está familiarizado con Python, puede probar PyX. Su conjunto de características es similar al de Asymptote. Por ejemplo, también puede usar LaTeX para composición tipográfica de texto/matemática.

Otra opción es Enthought Enable, pero eso es probablemente menos adecuado.

1

He tenido buenos resultados construyendo imágenes directamente en postscript. Una convención útil que he encontrado es tratar objetos como glifos en una fuente. Por lo tanto, cada objeto espera que el punto actual se establezca en, por ejemplo, la esquina inferior izquierda, y deja el punto actual en la parte inferior derecha. Puedes colocarlos en una matriz y atravesarlos: cada objeto deja el punto actual listo para el próximo.

Cuestiones relacionadas