align 环境中的 \pscharpath

align 环境中的 \pscharpath

请考虑以下示例:

% pdflatex -shell-escape filename.tex

\documentclass{article}

\usepackage{mathtools}
\usepackage{auto-pst-pdf,pst-text}

\newcommand*\R{\pscharpath[linewidth=0.25\pslinewidth,fillstyle=solid,fillcolor=red]{R}}
\newcommand*\Gu{\pscharpath[linewidth=0.25\pslinewidth,fillstyle=solid,fillcolor=yellow]{Gu}}
\newcommand*\Gr{\pscharpath[linewidth=0.25\pslinewidth,fillstyle=solid,fillcolor=green]{Gr}}

\begin{document}

\begin{align*}
  \Gr + \Gu + \R
\end{align*}
%\begin{equation*}
%  \Gr + \Gu + \R
%\end{equation*}

\begin{figure}[htbp]
\centering
\begin{pspicture}(1,1)
  \psline(0,0)(1,1)
\end{pspicture}
\end{figure}

\end{document}

输出

问题

如何\pscharpath使用pst-textalign在环境中正确打包吗?

从截图中你可以看到,我\Gr在图片中得到了一个环境align而不是\psline。如果我使用equation环境 而不是align环境 ,一切都很好。

答案1

ams对齐被评估两次,您只需要在最后一次运行中添加钩子:

\documentclass{article}

\usepackage{mathtools}
\usepackage{auto-pst-pdf,pst-text}
\makeatletter
\newcommand*\R{\ifmeasuring@ R\else\pscharpath[linewidth=0.25\pslinewidth,fillstyle=solid,fillcolor=red]{R}\fi}
\newcommand*\Gu{\ifmeasuring@ Gu\else\pscharpath[linewidth=0.25\pslinewidth,fillstyle=solid,fillcolor=yellow]{Gu}\fi}
\newcommand*\Gr{\ifmeasuring@ Gr\else\pscharpath[linewidth=0.25\pslinewidth,fillstyle=solid,fillcolor=green]{Gr}\fi}

\begin{document}

\begin{align*}
  \Gr + \Gu + \R
\end{align*}
%\begin{equation*}
%  \Gr + \Gu + \R
%\end{equation*}

\begin{figure}[htbp]
\centering
\begin{pspicture}(1,1)
  \psline(0,0)(1,1)
\end{pspicture}
\end{figure}

\end{document}

相关内容