pstricks 图形的可见性和编译问题

pstricks 图形的可见性和编译问题

我一直在尝试寻找解决方案来编译我的代码,但出现了错误消息类似于这个。

在他的例子中,他给出了错误的对象尺寸数。然而,在我的例子中,问题出在两行几乎相同的代码之间。

这是一个最小的工作示例,其中注释第二个点对象会使点 A 出现,而​​删除注释会使图像消失:

\documentclass{article}   
\usepackage{pst-solides3d}
\usepackage{fp}

\FPeval{\a}{2}
\FPeval{\b}{2}

\begin{document}
    \begin{pspicture}[solidmemory](-4,-4)(10,10)
        % ================== POINTS ==================
            % Doesn't show unless point B is not included
        \psSolid[object=point,args=0 0 \a, name=A, text=A, pos=uc]
            % Remove this and the first point appears
        \psSolid[object=point,args=0 \b \a, name=A, text=B, pos=uc]
    \end{pspicture}
\end{document}

这两者之间的唯一区别\b在于 y 输入。
它们都是具有 3 个 xyz 坐标的点,因此这不是维度错误。

有人知道为什么会发生这种情况吗?

这是错误输出:

Error: /typecheck in --mul--
Operand stack:
   xObservateur   --nostringval--   0.707107
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1926   1   3   %oparray_pop   1925   1   3   %oparray_pop   1909   1   3   %oparray_pop   1803   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1174/1684(ro)(G)--   --dict:0/20(G)--   --dict:117/200(L)--   --dict:752/1012(L)--   --dict:203/300(L)--   --dict:752/1012(L)--   --dict:3/6(L)--
Current allocation mode is local
Current file position is 5441
MiKTeX GPL Ghostscript 9.05: Unrecoverable error, exit code 1

** WARNING ** Couldn't open font map file "kanjix.map".
** WARNING ** Filtering file via command -->mgs.exe -q -dNOPAUSE -dBATCH -dEPSCrop -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -sOutputFile="C:/Users/Chase/AppData/Local/Temp/mik1044.tmp" "C:/Users/Chase/AppData/Local/Temp/mik1043.tmp" -c quit<-- failed.
** WARNING ** Image format conversion for PSTricks failed.
** WARNING ** Interpreting special command pst: (ps:) failed.
** WARNING ** >> at page="1" position="(262.098, 433.624)" (in PDF)
** WARNING ** >> xxx "pst:  tx@Dict begin STP newpath   1. .setopacityalpha  1 setlin"
 )
(see the transcript file for additional information)
Output written on TexSE*-*minimalExample*For*SE.pdf (1 page).
SyncTeX written on TexSE - minimalExample For SE.synctex.gz.
Transcript written on "TexSE - minimalExample For SE.log".

上面也提到了这一点:

Overfull \hbox (68.33841pt too wide) in paragraph at lines 15--16
[][] 
[1]

我尝试查看 hbox 过满错误,但人们提供的所有解决方法似乎都不起作用。如果是 hob 过满错误,似乎应该有一个非常简单的修复方法,可以强制所有内容运行并编译到页面上,但我找不到有关数字的修复方法。



我还在这里提供了一个更大的文本,它是希望更接近图像,我想要创建并将文本插入到我的主 pdflatex 文件中,尽管由于上述问题我无法判断它会是什么样子。 我在这里的另一个主题上提出了一个具有相同基本主题的问题,关于这个数字的更高端目标。

这是给出的相同文本,但没有注释掉的行,因此不会提供完整的所需图像:

\documentclass{article}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{pst-solides3d}
\usepackage[nomessages]{fp}

\pagestyle{empty}


\def \planeLocRatio {.7}            % ratio of z location of plane and radius
\def \radius {0.5}
\def \planeLen {1}              % half of one side of the plane
\FPeval{\contAng}{pi/4}         % angle from z axis to intersection of plane at sphere edge
\FPeval{\a}{radius*cos(contAng)}    % z location at plane intersection
\FPeval{\a2}{a/2}
\FPeval{\b}{radius*sin(contAng)}    % radius of circle at plane intersection
\FPeval{\b2}{b/2}
\FPeval{\h}{radius-radius*cos(contAng)} % z distance from top of sphere to plane
\FPeval{\h2}{h/2}
\FPeval{\imgsize}{planeLen+1}  % maybe increasing this helps /hbox errors?

\begin{document}
\begin{center}
    \begin{pspicture}[solidmemory](-\imgsize,-\imgsize)(\imgsize,\imgsize)

        % ==================  VIEW ===================
        \psset{
            viewpoint=10 45 20 rtp2xyz,
            lightsrc=viewpoint,
            %lightintensity=1.25
            xunit=0.5cm,
            yunit=0.5cm
            }


        % ================== POINTS ==================
        % origin
        \psSolid[object=point,args=0 0 0, name=O, text=O, pos=br]
        \psSolid[object=point,args=0 0 \a, name=A, text=A, pos=uc]

%%%%%%% Causes hbox problems, comment out everything from here to get working 
        \psSolid[object=point,args=0 \b \a, name=B, text=B, pos=uc]

        % ================== LINES ==================

        % origin to center of circle at plane intersection
        \psSolid[object=line,linecolor=black!50,linewidth=2pt,args=O A, name=OA]
        % label the equation to the side of the line midway through the line
        \psProjection[object=point,definition=milieu,args=O A,text=$Rcos \theta$,pos=uc]

        % line from origin to side of sphere intersected with plane
        \psSolid[object=line,linecolor=black!50,linewidth=2pt,args=O B, name=OB]
        \psProjection[object=point,definition=milieu,args=O B,text=$Rsin \theta$,pos=uc]

        % line from A to B
        \psSolid[object=line,linecolor=black!50,linewidth=2pt,args=A B, name=AB]



        % ================== SPHERE ==================
        \psSolid[
            object=sphere,
            name=mySphere,
            r=\radius,
            ngrid=30 30,            % number of grid lines across 2 dimensions r
            grid=false,         % remove line edges
            hue=0 0.5,
            opacity=0.4,
            hollow=true,
            intersectiontype=0,
            intersectionplan=0 0 1 \a,
            intersectioncolor=(bleu)
            ](0,0,0)

        \psSolid[
            object=plan,
            name=myPlane,
            definition=solidface,
            args=mySphere 1,
            base=-1 1 -1 1,
            action=draw,
            ](A,,)

        % Just some placeholders
        % Add different coloring to top surface of sphere
        %??
        % Add different coloring to circle where plane intersects sphere
        %??


        % add some labels for each line and surface
        \uput[-135](0,0){$R cos \theta$}
        %??

    \end{pspicture}

\end{center}
\end{document}

答案1

当下面的语句被 TeX 扩展时

\psSolid[object=point,args=0 \b \a, name=A, text=B, pos=uc]

args=在 PostScript 中将显示为

args=0 22

后面的空格\b会被 TeX 吞掉。这与 中的相同\TeX forever。使用

\psSolid[object=point,args=0 \b\space \a, name=A, text=B, pos=uc]

在您的第二个例子中,定义args=O A是指平面上的两个点,但您O A指的是 3D 中的两个点。

 \psProjection[object=point,definition=milieu,args=O A,text=$Rsin \theta$,pos=uc]

请参阅 pst-splides3d 文档第 158 页的示例。

相关内容