Problema extraño relacionado con pstricks, la cadena de herramientas dvi->ps->pdf y la combinación de letras rt

Problema extraño relacionado con pstricks, la cadena de herramientas dvi->ps->pdf y la combinación de letras rt

Este es un error extremadamente extraño [Editar], no es un error, el problema estaba en mi código.

Pasé 1 hora reduciendo esto a un pequeño ejemplo de trabajo, no puedo determinar si es mínimo.

Configuración: última versión de Ubuntu, .tex actualizado estándar. Archivo:

\documentclass{beamer}
\usepackage[english]{babel}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage{pst-plot}
\usepackage{pst-math}
\newcommand{\polarWedge}[3]{%
\pstVerb{%
/t #1 def%
}%
}%
\begin{document}
\begin{frame}
\begin{pspicture*}(-3,-1)(1.5,2.3)%
\polarWedge{0}{1}{t 2 div 1 add}%
\end{pspicture*}
rt
\end{frame}
\end{document}

Síntomas: Esto no se compila correctamente con la cadena de herramientas dvi->ps-pdf. Se compila con pdflatex. El problema está en la combinación de letras rt. Si cambia rt por rt o cualquier otra combinación de letras, el problema desaparece. Esto es lo más extraño que he visto en látex (¿podría ser la forma en que se procesan las letras rt?)

No estoy seguro de cuán reproducible es este problema. ¡Avíseme si tiene el mismo problema en su máquina!


[Editar] El problema ya está resuelto. Herbert identificó correctamente el problema: lo que sucede es que t se usa como variable interna y mi redefinición de t estropea algo. La solución propuesta por Herbert también fue la correcta: necesito definir un diccionario local en el que evalúo la variable t y luego abrir el diccionario. Estoy publicando una versión corregida de la diapositiva.

Debo admitir que esto no fue un error, sino una manifestación de mi falta de conocimiento de la posdata.


[Editar]@cfr: no, su ejemplo mínimo no aborda el mismo problema que mi ejemplo. En mi ejemplo, si eliminas pspicture, la diapositiva se compilará perfectamente con las letras rt. El error rt aparece solo si usa pspicture.


@Herbert: sí, creo que el problema radica en que la letra t se usa en más de un lugar, combinada con el uso de \pstVerb para redefinir la letra t. Sin embargo, necesito asignar valores a la letra t para evaluar mi función. ¿Hay alguna manera de hacerlo sin usar \pstVerb?


[Editar] @cfr: El error que obtuve fue del ejecutable ps2pdf. El informe de errores se ve así:

Proceso iniciado: ps2pdf "pstricksProblem".ps

Error: /invalidrestore en --restore-- Pila de operandos: (r) 0.4 --nostringval-- --nostringval-- Pila de ejecución: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1916 1 3 %oparray_pop 1915 1 3 %oparray_pop 1899 1 3 %oparray_pop 1787 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- 1839 3 4 %oparray_pop --nostringval-- 1823 3 4 %oparray_pop --nostringval-- Pila de diccionario : --dict:1175/1684(ro)(G)-- --dict:1/20(G)-- --dict:163/200(L)-- --dict:189/300(L) -- El modo de asignación actual es local La posición actual del archivo es 133316 GPL Ghostscript 9.10: error irrecuperable, código de salida 1

Proceso cerrado con error(es)


[Editar] Dado que la gente preguntó, la diapositiva original se ve así:

\documentclass{beamer}
\usepackage{etex}
\usepackage[english]{babel}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage{auto-pst-pdf}
\usepackage{pst-plot}
\usepackage{pst-math}
\newcommand{\polarWedge}[3]{%
\pstVerb{%
/t #1 def%
/firstX #1 57.29578 mul cos #3 mul def%
/firstY #1 57.29578 mul sin #3 mul def%
}%
\pstVerb{%
/t #2 def%
/secondX #2 57.29578 mul cos #3 mul def%
/secondY #2 57.29578 mul sin #3 mul def%
}%
\pscustom[fillcolor=cyan, fillstyle=solid, linecolor=blue]{%
\psline(0,0)(! firstX firstY)(! secondX secondY)(0,0)%
}%
}%
\newcommand{\drawPolar}[4]{%
\parametricplot[#4]{#1}{#2}{#3 t 57.29578 mul cos mul #3 t 57.29578 mul sin mul}%
}

\begin{document}
\begin{frame}
\begin{pspicture*}(-3,-1)(3.5,3.3)%
\uncover<2->{%
\polarWedge{0}{0.05}{3 t sub}%
}%
\uncover<3->{%
\polarWedge{0.05}{0.1}{3 t sub}%
}%
\uncover<4->{%
\polarWedge{0.1}{0.15}{3 t sub}%
}%
\uncover<5->{%
\polarWedge{0.15}{0.2}{3 t sub}%
}%
\uncover<6->{%
\polarWedge{0.2}{0.25}{3 t sub}%
}%
\uncover<7->{%
\polarWedge{0.25}{0.3}{3 t sub}%
}%
\uncover<8->{%
\polarWedge{0.3}{0.35}{3 t sub}%
}%
\uncover<9->{%
\polarWedge{0.35}{0.4}{3 t sub}%
}%
\drawPolar{0}{2.5}{3 t sub}{linecolor=red, plotpoints=1000}%
\end{pspicture*}
\uncover<1-10>{}
rt
\end{frame}
\end{document}

[Editar] La variable que uso se llama t, porque estoy pasando la función

3 toneladas sub

como argumento para una función que llama \parametricplot, y el nombre de la variable en uso para parametricplot es t. Si lo deseas estoy haciendo una función cuyo argumento es una función. Por supuesto, mi configuración se basa completamente en el supuesto de que la variable "t" es una variable local. Que este sea el caso lo respalda el hecho de que la diapositiva anterior funciona cuando las letras r y t están separadas. Sin embargo, cuál es el papel de las letras r y t una al lado de la otra, es algo que no puedo entender.

[Editar] Versión final corregida de la diapositiva. La corrección se realizó a partir del consejo de Herbert (¡muchas gracias!) y de una pequeña lectura de la documentación posdata.

\documentclass{beamer}
\usepackage{etex}
\usepackage[english]{babel}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage{auto-pst-pdf}
\usepackage{pst-plot}
\usepackage{pst-math}
\newcommand{\polarWedge}[3]{%
\pstVerb{%
/firstX  1 dict begin /t #1 def #1 57.29578 mul cos #3 mul end def%
/firstY  1 dict begin /t #1 def #1 57.29578 mul sin #3 mul end def%
/secondX 1 dict begin /t #2 def #2 57.29578 mul cos #3 mul end def%
/secondY 1 dict begin /t #2 def #2 57.29578 mul sin #3 mul end def%
}%
\pscustom[fillcolor=cyan, fillstyle=solid, linecolor=blue]{%
\psline(0,0)(! firstX firstY)(! secondX secondY)(0,0)%
}%
}%
\newcommand{\drawPolar}[4]{%
\parametricplot[#4]{#1}{#2}{#3 t 57.29578 mul cos mul #3 t 57.29578 mul sin mul}%
}

\begin{document}
\begin{frame}
\begin{pspicture*}(-3,-1)(3.5,3.3)%
\uncover<2->{%
\polarWedge{0}{0.05}{3 t sub}%
}%
\uncover<3->{%
\polarWedge{0.05}{0.1}{3 t sub}%
}%
\uncover<4->{%
\polarWedge{0.1}{0.15}{3 t sub}%
}%
\uncover<5->{%
\polarWedge{0.15}{0.2}{3 t sub}%
}%
\uncover<6->{%
\polarWedge{0.2}{0.25}{3 t sub}%
}%
\uncover<7->{%
\polarWedge{0.25}{0.3}{3 t sub}%
}%
\uncover<8->{%
\polarWedge{0.3}{0.35}{3 t sub}%
}%
\uncover<9->{%
\polarWedge{0.35}{0.4}{3 t sub}%
}%
\drawPolar{0}{2.5}{3 t sub}{linecolor=red, plotpoints=1000}%
\end{pspicture*}
\uncover<1-10>{}
\end{frame}
\end{document}

-Todor Milev

Respuesta1

No me queda del todo claro lo que quieres mostrar. Como ya dije tse usa internamente por beamery también como variable por \psparametricplot. Es peligroso redefinirlo.Cuéntanos qué quieres mostrary podemos dar una ayuda útil. Sin embargo, aquí está su ejemplo:

\documentclass{beamer}
\usepackage{etex}
\usepackage{pst-plot}
\usepackage{pst-math}
\newcommand\polarWedge[3]{%
  \pstVerb{/t #1 def}
  \pscustom[fillcolor=cyan,fillstyle=solid,linecolor=blue,linewidth=0.2pt]{
    \psline(0,0)(! #1 COS #3 mul #1 SIN #3 mul)
    \parametricplot{#1}{#2}{#3 t COS mul #3 t SIN mul}
    \closepath}}
\newcommand\drawPolar[4]{%
  \parametricplot[#4]{#1}{#2}{#3 t COS mul #3 t SIN mul}%
}

\begin{document}
\begin{frame}
\begin{pspicture*}(-3,-1)(3.5,3.3)%
\multido{\iA=2+1,\rA=0.00+0.05,\rB=0.05+0.05}{16}{%
  \uncover<\iA->{\polarWedge{\rA}{\rB}{3 t sub}}}%
\drawPolar{0}{2.5}{3 t sub}{linecolor=red, plotpoints=100}%
\end{pspicture*}

rt
\end{frame}
\end{document}

Y la vista de la última diapositiva:

ingrese la descripción de la imagen aquí

información relacionada