Witam! BJ> input epsf BJ> ^^^^^^^^^^^ [...] wspominałem o niebezpieczeństwach związanych BJ> z używaniem pakietu epsf Adam Kolany: > toś mnie zaskoczył! używam go już od jakichś czterech lat > i chwalę sobie. mogę prosić o powtórkę (w skrócie) o jakie > niebezpieczeństwo chodzi? Piotr Budzik: > Jest w archiwum listy: > http://www.man.torun.pl/cgi-bin/wa?A2=ind0106&L=gust-l&F=&S=&P=17940 Dzięki -- mi też się może ta wiadomość przydać ;-). Po przemyśleniu sprawy doszedłem do wniosku, że jednak warto rozwinąć temat, a nuż kiedyś powstanie FAQ... (Kto woli czytać na skróty, niech przejdzie od razu do punktu 5.) 1. Po pierwsze, istnieją (i żyją niezależnym życiem) dwa pakiety epsf: oryginalny Rokickiego i -- bardziej popularny -- rozbudowany przez przez Nelsona H. F. Beebego. 2. Podstawowy problem w obu pakietach to brak neutralizacji pewnych ,,niebezpiecznych'' instrukcji postscriptowych, mianowicie instrukcji zmieniających ustawienia strony. Pakiet epsfx (produkcji BOP) zawiera następujący kawałek kodu: \vbox{\special{ps: /SItps save N /isls false N statusdict begin /setpageparams {pop pop pop pop} def /setpage {pop pop pop} def end userdict begin /bop-hook {} def end }% Dzięki niemu nieprawidłowe z formalnego punktu widzenia (tzn. niezgodne ze specyfikacją Adobe) EPS-y produkowane przez dvipsa mogą być bezpiecznie włączane. Brak takich zabezpieczeń powoduje, że np. mogą wystąpić kłopoty z lustrzanym odbiciem tekstów zawierających EPS-y wygenerowane przez dvipsa (za ten aspekt odpowiedzialny jest fragment ,,/bop-hook {} def''). 3. Ostatnio stwierdziliśmy, że Nelson H. F. Beebe wprowadził drastyczną zmianę w funkcjonalności: makro \epsfbox -- wbrew nazwie -- zmienia tryb na horyzontalny (zawsze wywołuje \leavevmode), zamiast po prostu wstawiać pudełko. Naszym Beebe zdaniem nie powinien był tego robić. Ale trudno, stało się -- od tamtego czasu (5 maja 1992) oryginalny pakiet Rokickiego jest niekompatybilny z pakietem rozbudowanym przez Nelsona H. F. Beebego. 4. Mija dwa i pół roku, jak Tomasowi Rokickiemu wysłaliśmy obszerne memorandum dotyczące dvipsa i spraw związanych z dvipsem. Nasze uwagi dotarły do Rokickiego, który był uprzejmy odpisać: > Wow, what a lot of stuff! I appreciate it all and will incorporate > almost all of your changes, I am sure. very soon. Po czym nic się nie wydarzyło... Jeden z punktów memorandum dotyczył pakietu epsf. Poniżej cytuję najistotniejsze fragmenty tłumaczenia tego punktu: === === === === === === === === === === === === === === === === === === === Natrafiliśmy na dwa problemy związane z pakietem EPSF: a) ponieważ parametry `rwi' i `rhi' są podawane w dzięsiątych częściach bp, oryginalne makra mnożą niektóre z rozmiarów przez dziesięć, co powoduje kłopoty już przy stosunkowo niewielkich obrazkach [rzędu 0,5m; ponadto dokładność obliczania parametrów `rwi' i `rhi' jest niepotrzebnie zaniżona -- przyp. tłum ;-] [...] b) makro epsfframe ma poważną wadę: nie zachowuje rozmiaru oryginalnego EPS-a; to wyklucza możliwość użycia ramek do testowania gdyż ustawienie \epsfframetrue może zmienić łamanie stron i/lub wierszy. === === === === === === === === === === === === === === === === === === === 5. Reasumując: -- są dwa pakiety epsf (a na STANie nawet więcej ;-), niekompatybilne ze sobą -- oba nie neutralizują ,,niebezpiecznych'' instrukcji postscriptowych -- oba niedokładnie wyliczają (z użyciem TeX-owej operacji \divide) rozmiary obiektu postscriptowego (rwi, rhi) -- oba nie potrafią przetworzyć EPS-ów większych niż ok. 0,5m (0,1\maxdimen) -- żaden nie zostawia po sobie porządnego pudełka, a na dobitkę rozbudowany przez Nelsona H. F. Beebego wywołuje nieproszony \leavevmode -- pakiet rozbudowany przez Nelsona H. F. Beebego ma nieprzyjemną własność polegającą na tym, że ,,włączenie'' ramek może wpłynąć na łamanie tekstu. Te kłopoty nam doskwierały, Rokicki nie reagował, więc musieliśmy wyprodukować własny pakiet, epsfx, który tych akurat wad nie posiada, za to ma całkiem inne ;-) Pozdrawiam -- Jacko =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Bogus\l{}aw Jackowski: [EMAIL PROTECTED] ---------------------------------------------------------------- Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
