¿Malentendido yunit en pstricks, o un error, o una imprecisión extrema?

¿Malentendido yunit en pstricks, o un error, o una imprecisión extrema?

Alimentando latexcon

\documentclass{article}
\pagestyle{empty}
\usepackage{pstricks}
\begin{document}
{1:
\begin{pspicture}(-.1,-1)(.1,5)
  \psline(0,0)(0,5)
\end{pspicture}}
{$10^{-4}$: \psset{yunit=.0001}%
\begin{pspicture}(-.1,-10000)(.1,50000)
  \psline(0,0)(0,50000)
\end{pspicture}}
{$10^{-5}$: \psset{yunit=.00001}%
\begin{pspicture}(-.1,-100000)(.1,500000)
  \psline(0,0)(0,500000)
\end{pspicture}}
{$10^{-6}$: \psset{yunit=.000001}%
\begin{pspicture}(-.1,-1000000)(.1,5000000)
  \psline(0,0)(0,5000000)
\end{pspicture}}
\end{document}

luego, aplicarlo dvipsal archivo DVI resultante y abrir el archivo Postscript resultante gvdebería mostrar, según tengo entendido, cuatro segmentos de línea verticales de 5 cm de largo cuyo punto más bajo está 1 cm por encima de la línea de base. Sin embargo, obtenemos sólo tres segmentos de línea, y varían tanto en longitud como en el punto más bajo:

salida de látex-dvips-gv

¿Es realmente LaTeX con PSTricks?entoncesimpreciso, o hay un error (por ejemplo, un desbordamiento/desbordamiento silencioso) escondido en alguna parte? El log y la consola no nos avisan.

Respuesta1

TeX usa aritmética de punto fijo y \psset{yunit=.000001}%se guarda como un registro de dimensión interno, \psyunit=0.000001cmlo que equivale a configurarlo en 0pt. El resultado final es que el final pspicturetiene una altura de 0 puntos (y las alturas de todos ellos son esencialmente arbitrarias solo dependiendo del error de redondeo)

\tracingall\psset{yunit=.0001}\tracingnone

muestra

\psyunit=\dimen166
...
{into \dimen166=0.00304pt}

entonces yunitya está en el límite de valores tex razonables, su configuración final

\tracingall\psset{yunit=.000001}\tracingnone

muestra

{into \dimen166=0.0pt}

por lo que yunitse establece en 0 puntos.

Respuesta2

Haga todos los cálculos en PS-Level y deje el cuadro TeX (pspicture) en la unidad compatible con TeX:

\DocumentMetadata{}
\documentclass{article}
\pagestyle{empty}
\usepackage{pstricks}
\def\myLine(#1,#2)(#3,#4){%
  \psline(#1,#2)(!#3 #4 yunit mul)}

\begin{document}
{1:
    \begin{pspicture}(-.1,-1)(.1,5)
        \psline(0,0)(0,5)
\end{pspicture}}
{$10^{-4}$: \pstVerb{/yunit 0.0001 def}%
    \begin{pspicture}(-.1,-1)(.1,5)
        \myLine(0,0)(0,50000)
\end{pspicture}}
{$10^{-5}$: \pstVerb{/yunit 0.00001 def}%
    \begin{pspicture}(-.1,-1)(.1,5)
        \myLine(0,0)(0,500000)
\end{pspicture}}
{$10^{-6}$: \pstVerb{/yunit 0.000001 def}%
    \begin{pspicture}(-.1,-1)(.1,5)
        \myLine(0,0)(0,5000000)
\end{pspicture}}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada