只有变量的最后一个值进入 \psfrag 函数

只有变量的最后一个值进入 \psfrag 函数

我进行了两次调用,但似乎只有最后一个值\lRaise进入了函数,因此两个框都提高了 -5pt:

\newlength{\lRaise}
\setlength{\lRaise}{-0.97pt}
\psfrag{low-order}[B][][0.8]{\raisebox{\lRaise}{молодший}}
\setlength{\lRaise}{-5pt}
\psfrag{high-order}[B][][0.8]{\raisebox{\lRaise}{старший}}

每个文档我都会有很多这样的调用。如何传递所有的值\lRaise

编辑:回答评论:

\newlength{\lOriginal}
\newlength{\lLocal}
\newlength{\lRaise}
\newcommand{\psfragtrans}[2]{
\settodepth{\lOriginal}{#1}
\settodepth{\lLocal}{#2}
\ifdim\lLocal>\lOriginal\setlength{\lRaise}{\dimexpr(\lOriginal-\lLocal)/2\relax}\else\setlength{\lRaise}{0pt}\fi
\psfrag{#1}[B][][0.8]{\raisebox{\lRaise}{#2}}
}

答案1

排版 PS 字符串有点奇怪,但无论如何

\newlength{\lOriginal}
\newlength{\lLocal}
\newlength{\lRaise}
\newcommand{\psfragtrans}[2]{%%%%
\settodepth{\lOriginal}{#1}%%%%
\settodepth{\lLocal}{#2}%%%%
\ifdim\lLocal>\lOriginal\setlength{\lRaise}{\dimexpr(\lOriginal-\lLocal)/2\relax}\else\setlength{\lRaise}{0pt}\fi
\def\tmp##1{\psfrag{#1}[B][][0.8]{\raisebox{##1}{#2}}}%%%%
\expandafter\tmp\expandafter{\the\lRaise}%%%%%
}

相关内容