Presnost v latexu?

Ladislav Bitto geoflabi at savba.sk
Thu Feb 24 13:26:09 CET 2005


Dobry den,

este raz sa vratim k problemu \framebox, lebo asi viaceri si - na zaklade mojej
odpovedi a odpovedi pana Wagnera - myslia, ze TeX je nepresny.

On Sun, 20 Feb 2005, Petr Ruzicka wrote:

> Dobry den
> Chtel bych se zeptat na jednoduchou vec, kterou nemohu objasnit.
>
> Mam jednoduchy priklad uziti grafiky v LaTeXu:
>
> \begin{document}
> \begin{picture}(100,100)
> \put(0,0){\framebox(20,20)}
> \put(0,0){\line(0,1){50}}
> \end{picture}
> \end{document}
>
> Pokud se podivam na vysledne dvi (po prekladu pomoci cslatex) tak je
> jasne videt, ze ctverec a usecka se navzajem neprekryvaji. Oba vsak maji
> pocatecni body v (0,0) a meli by se prekryvat (prohlizim pomoci kdvi).
> Vse jde samozrejme vyresit posunem ctverce o nepatrnou hodnotu doprava -
> ale neni mi jasne proc?
>
> Pravdepodobne je nekde chyba v mem zadani... muze mi nekdo poradit jak
> dosahnot pozadovane presnosti?

Aj ked som \framebox tusim nikdy nepouzil, chcel som sa dozvediet, ze ako je
naprogramovany a ako funguje v prostredi picture. Skusal som na to prist pri
zmenach hrubky ciary. Spravalo sa to na prvy pohlad nepochopitelne. Potom som
si vytvoril lavy obrazok (nizsie prilozeny kod), z ktoreho som nakoniec
vydedukoval:

1. zadana x,y velkost \frameboxu je vnutorna plocha (biela plocha)
2. vonkajsia velkost je zvacsena z kazdej strany o hrubku ciary
3. vo vertikalnom smere to posunie oproti \put o polovicu
   aktualnej hrubky ciary
4. v horizontalnom smere to posunie oproti \put o polovicu
   hrubky ciary, ktora bola definovana ako prva v PICTURE (co je trosku
   prekvapujuce, cakal som rovnaky posuv ako v tretom bode)

Na zaklade tohto sa uz da nakreslit pravy obrazok, kde je vsetko v poriadku. No
a presnost si mozme odmerat, ked DVIPS pustime s 300DPI a potom s 9600DPI.
Pri 300DPI na lavom obrazku vidim medzi ciernou a modrou zvislou ciarou tenky
cerveny pas (este som objavil 2-3 nerovnosti). Je siroky 0.08466mm, co
zodpoveda 300DPI. Pri 600DPI na tom istom mieste vidim zeleny pas siroky
0.042mm. Pri dalsom zvysovani sa chyby objavuju inde a nakoniec som uz
nenasiel nerovnosti.

Takze s tym posuvom to nie je chyba, ale \framebox je tak
naprogramovany.

Zdravi
Ladislav Bitto

\begin{picture}(30,30)
\linethickness{4mm}
\put(0,0){\line(0,1){20}}
\special{ps:  1 0 0 setrgbcolor}
\put(0,0){\framebox(10,10)}
\special{ps:  0 1 0 setrgbcolor}
\linethickness{2mm}
\put(0,0){\framebox(10,10)}
\special{ps:  0 0 1 setrgbcolor}
\linethickness{1mm}
\put(0,0){\framebox(10,10)}
\end{picture}
\special{ps:  0 setgray}
\begin{picture}(30,30)
\linethickness{4mm}
\put(0,0){\line(0,1){20}}
\special{ps:  1 0 0 setrgbcolor}
\put(2,-2){\framebox(10,10)}
\special{ps:  0 1 0 setrgbcolor}
\linethickness{2mm}
\put(2,-1){\framebox(10,10)}
\special{ps:  0 0 1 setrgbcolor}
\linethickness{1mm}
\put(2,-0.5){\framebox(10,10)}
\end{picture}

>
> Dekuji PetrR
>



More information about the csTeX mailing list