2009-09-09 15 views
5

Ho bisogno di disegnare alcune immagini per i miei documenti LaTeX, e ho trovato che PostScript fatto a mano sembra essere una buona scelta (voglio fare cose programmaticamente, ho bisogno di funzioni matematiche, ecc.). Ho provato anche TikZ ma mi è sembrato troppo complicato e difficile da usare.Qualsiasi buona libreria di disegno postscript?

Tuttavia, l'utilizzo di PostScript standard semplice è un po 'complicato poiché non ci sono realmente funzioni standard per disegnare forme (ad esempio nemmeno rettangoli).

Esiste una libreria PostScript che includa funzioni per forme comuni e semplifichi la vita? Mi sembra che questo problema dovrebbe essere abbastanza comune.

Oppure devo saltare PostScript e passare ad un sistema superiore? Quale?

+0

PGF/TikZ è IMHO davvero facile da usare e ha grandi librerie che consentono di creare grandi disegni con solo un paio di righe. – f3lix

risposta

6

Alcune persone e molti driver PostScript definiscono il proprio insieme di procedure per disegnare forme. Un driver PostScript può produrre i seguenti collegamenti:

/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 

Poi, un rettangolo sarebbe stata elaborata simili:

0 0 100 100 rect sf 

Il gravami di ciò rendono PostScript particolarmente difficile da trattare. MetaPost potrebbe essere una soluzione migliore se i tuoi disegni sono generati in modo programmatico/matematico. MetaPost genera PostScript incapsulato (che puoi includere nel documento LaTeX) ma è più adatto per disegnare immagini con definizioni algebriche.

+0

Sì, definire le mie funzioni per le forme è ciò che ho fatto. Ho solo la brutta sensazione di reinventare la ruota, dato che ora ci devono essere migliaia di diverse implementazioni di rettangoli. Avrebbe senso che qualcuno avrebbe impacchettato le sue funzioni e le avrebbe rese disponibili agli altri. Grazie per il suggerimento su MetaPost. Sembra abbastanza interessante, mi ha portato ad Asymptote che sembra essere una versione modernizzata di MetaPost. – pafcu

1

Mi piace usare matplotlib. Può generare direttamente sia postscript che PDF, è in python e può anche realizzare grafici molto sofisticati (da qui il suo nome). Se vuoi incidere direttamente PostScript, sarai in grado di utilizzare i pst in LaTeX, ma dovrai eseguire tutti i passaggi attraverso dvi2ps e poi ps2pdf per creare PDF. Vuoi davvero PostScript o PDF? Penso che tu voglia i PDF, giusto?

+0

Sì, i PDF sono il mio obiettivo finale. L'unico motivo per cui utilizzo PostScript è perché è una buona combinazione di disegno e matematica. Non sono sicuro che matplotlib sia quello che sto cercando, dal momento che ciò che voglio fare è disegnare figure che sono solo parzialmente matematicamente generate. Ho bisogno di scatole e frecce e possibilmente di forme arbitrarie che potrebbero essere difficili da fare con una libreria destinata a tracciare le funzioni? Inoltre, il codice Python tende ad essere piuttosto dettagliato. Tuttavia, darò un'occhiata più da vicino anche a matplotlib. – pafcu

+0

Se hai solo bisogno di box e frecce e forme arbitrarie, dovresti usare graphviz e ottenere il layout automatico. – vy32

+0

Ho specificamente bisogno di un layout manuale. Graphviz, come suggerisce il nome, è per i grafici. Voglio disegnare figure in generale. – pafcu

1

OK, ho deciso che Asymptote è la cosa migliore dal pane a fette. Gestisce in modo ottimale grafici e figure arbitrarie e dispone di un vasto numero di moduli di estensione (compresa la compatibilità con MetaPost se ne interessa). Inoltre compone il testo utilizzando LaTeX che è incredibilmente interessante. Come bonus aggiuntivo, viene persino stampato direttamente in PDF (o EPS).

Continuo a pensare che sia un po 'triste non ci sono buone librerie di routine per il buon vecchio PostScript.

0

Genera SVG, quindi utilizza qualcosa come iText e/o Inkscape per la conversione a livello di codice in PDF/PS. Ho costruito uno stack editoriale in questo modo e ha funzionato davvero bene.

1

Ho usato Asymptote (per i grafici però) ma ho trovato faticoso imparare ancora un altro linguaggio personalizzato. Se hai familiarità con Python, puoi provare con lo PyX. Il suo set di funzionalità è simile a quello di Asymptote. Ad esempio, può anche utilizzare LaTeX per la composizione di testo/matematica.

Un'altra opzione è Enthought Enable, ma probabilmente è meno adatta.

1

Ho avuto buoni risultati nella costruzione di immagini direttamente nel poscritto. Una convenzione utile che ho trovato è quella di trattare oggetti come glifi in un font. Quindi ogni oggetto si aspetta che il punto corrente sia impostato, per esempio, nell'angolo in basso a sinistra, e lascia il punto corrente in basso a destra. Puoi metterli in un array e tutto attraverso di esso: ogni oggetto lascia il punto corrente pronto per il prossimo.

Problemi correlati