pstricks의 yunit을 오해하거나 버그 또는 극도의 부정확성을 갖고 있습니까?

pstricks의 yunit을 오해하거나 버그 또는 극도의 부정확성을 갖고 있습니까?

먹이 latex주기

\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}

dvips그런 다음 결과 DVI 파일에 적용 하고 결과 Postscript 파일을 열면 gv가장 낮은 점이 기준선보다 1cm 위에 있는 4개의 수직 5cm 길이 선 세그먼트가 표시되어야 합니다. 그러나 우리는 세 개의 선분만 얻었으며 길이와 가장 낮은 지점이 모두 다릅니다.

latex-dvips-gv의 출력

PSTricks가 포함된 LaTeX가 정말인가요?그래서부정확하거나 어딘가에 버그(예: 자동 오버플로/언더플로)가 숨어 있습니까? 로그와 콘솔은 우리에게 경고하지 않습니다.

답변1

TeX는 고정 소수점 연산을 사용하고 \psset{yunit=.000001}%내부 dimen 레지스터로 저장됩니다. \psyunit=0.000001cm이는 0pt로 설정하는 것과 같습니다. 최종 결과는 최종 pspicture높이가 0pt라는 것입니다(그리고 모든 높이는 반올림 오류에 따라 본질적으로 임의적입니다).

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

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

따라서 yunit이미 합리적인 tex 값의 한계에 도달했습니다. 최종 설정은

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

{into \dimen166=0.0pt}

그래서 yunit0pt로 설정됩니다.

답변2

PS 레벨에서 모든 계산을 수행하고 TeX 친화적인 장치에서 TeX 상자(pspicture)를 수행하십시오.

\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}

여기에 이미지 설명을 입력하세요

관련 정보