2009-09-09 19 views
5

Potrzebuję narysować kilka zdjęć dla moich dokumentów LaTeX i odkryłem, że ręcznie napisany PostScript wydaje się być dobrze dopasowany (chcę robić rzeczy programowo, potrzebować funkcji matematycznych itp.). Próbowałem też TikZ, ale to wydawało się zbyt skomplikowane i trudne w użyciu.Jakieś dobre biblioteki do rysowania postscriptowego?

Jednak używanie zwykłego standardowego PostScriptu jest nieco bolesne, ponieważ nie ma żadnych standardowych funkcji do rysowania kształtów (np. Nawet prostokątów).

Czy istnieje biblioteka PostScript, która zawiera funkcje dla popularnych kształtów i ułatwia życie? Wydaje mi się, że ten problem powinien być dość powszechny.

Czy powinienem pominąć PostScript i przejść do jakiegoś lepszego systemu? Który?

+0

PGF/TikZ jest IMHO bardzo łatwy w obsłudze i ma wielkie biblioteki, które umożliwiają tworzenie wspaniałych rysunków z tylko kilka linii. – f3lix

Odpowiedz

6

Kilka osób i wiele sterowników PostScript definiuje własny zestaw procedur do rysowania kształtów. Sterownik PostScript może wysyłać następujące skróty:

/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 

Następnie prostokąt byłyby wyciągnięte tak:

0 0 100 100 rect sf 

powolne tempo to robi PostScript szczególnie trudne do zniesienia. MetaPost może być lepszym rozwiązaniem, jeśli twoje rysunki są programowo/matematycznie generowane. MetaPost generuje enkapsulowany PostScript (który można dołączyć do dokumentu LaTeX), ale jest bardziej odpowiedni do rysowania obrazów z definicjami algebraicznymi.

+0

Tak, definiowanie własnych funkcji dla kształtów jest tym, co zrobiłem. Mam po prostu złe przeczucie, że wymyślam koło, ponieważ musi istnieć tysiące różnych wersji prostokątów. Byłoby sensowne, że ktoś zapakowałby swoje własne funkcje i udostępnił je innym. Dzięki za wskazówkę na MetaPost. Wydaje się dość interesujący, doprowadził mnie do Asymptote, która wydaje się być zmodernizowaną wersją MetaPost. – pafcu

1

Lubię używać matplotlib. Może generować zarówno postscript, jak i PDF bezpośrednio, jest w Pythonie i może również wykonywać bardzo wyrafinowane wykresy (stąd jego nazwa). Jeśli chcesz hackować PostScript bezpośrednio, będziesz mógł używać puzzli w LaTeX, ale będziesz musiał uruchomić wszystko, przechodząc przez dvi2ps, a następnie ps2pdf, by tworzyć pliki PDF. Czy naprawdę chcesz PostScript lub PDF? Myślę, że chcesz pliki PDF, prawda?

+0

Tak, pliki PDF są moim ostatecznym celem. Jedynym powodem, dla którego używam PostScriptu jest to, że jest to dobra kombinacja rysunku i matematyki. Nie jestem pewien, czy matplotlib jest tym, czego szukam, ponieważ chcę tylko rysować liczby, które są tylko częściowo matematycznie generowane. Potrzebuję skrzynek i strzałek i ewentualnie dowolnych kształtów, które mogą być trudne do zrobienia z biblioteką przeznaczoną do kreślenia funkcji? Ponadto kod Pythona wydaje się być dość szczegółowy. Niemniej jednak przyjrzę się bliżej matplotlib. – pafcu

+0

Jeśli potrzebujesz tylko pól i strzałek oraz dowolnych kształtów, powinieneś użyć graphviz i uzyskać automatyczny układ. – vy32

+0

Potrzebuję układu ręcznego. Graphviz, jak sama nazwa wskazuje, jest dla wykresów. Chcę generalnie rysować liczby. – pafcu

1

OK, zdecydowałem, że Asymptote jest najlepszą rzeczą od czasu krojonego chleba. Obsługuje rysowanie zarówno wykresów, jak i dowolnych liczb naprawdę dobrze i ma ogromną liczbę modułów rozszerzeń (w tym kompatybilność z MetaPost, jeśli ci na tym zależy). Dodatkowo tworzy tekst za pomocą LaTeX, który jest niesamowicie fajny. Jako dodatkowy bonus daje nawet bezpośrednio do PDF (lub EPS).

Nadal uważam, że jest to trochę smutne, ale nie ma dobrych bibliotek procedur dla dobrego, olskiego PostScriptu.

0

Wygeneruj SVG, a następnie użyj czegoś w rodzaju iText i/lub Inkscape, aby programowo konwertować na PDF/PS. W ten sposób zbudowałem stos publikacji i wszystko działało naprawdę przyjemnie.

1

Użyłem Asymptote (dla wykresów), ale nauczyłem się jeszcze innego niestandardowego języka. Jeśli znasz Python, możesz spróbować wypróbować PyX. Jego zestaw funkcji jest podobny do Asymptote. Na przykład może również używać LaTeX do zapisywania tekstu/matematyki.

Inną opcją jest Enthought Enable, ale jest to prawdopodobnie mniej odpowiednie.

1

Mam dobre wyniki konstruowania obrazów bezpośrednio w postscript. Jedną z pomocnych konwencji, które znalazłem, jest traktowanie obiektów, takich jak glify, czcionką. Zatem każdy obiekt oczekuje, że punkt bieżący zostanie ustawiony na, powiedzmy, w lewym dolnym rogu i pozostawi punkt bieżący w prawym dolnym rogu. Możesz umieścić je w tablicy i przepuścić przez nią: każdy obiekt pozostawia bieżący punkt gotowy na następny.

Powiązane problemy