如何使用 \widthof 和 \heightof 指定 \makebox 的宽度和高度而不产生错误?

如何使用 \widthof 和 \heightof 指定 \makebox 的宽度和高度而不产生错误?

一旦出现以下(工作)定义

\newcommand
    {\TESTFRACTION}
    {%
        \makebox
            [\widthof{${}\left(\frac{a}{1}\right){}$}]
            {${}\left(\frac{b}{1}\right){}$}
    }

更改为也包括高度

\newcommand
    {\TESTFRACTION}
    {%
        \makebox
            (\widthof{${}\left(\frac{a}{1}\right){}$},
             \heightof{${}\left(\frac{a}{1}\right){}$})
            {${}\left(\frac{b}{1}\right){}$}
    }

! Missing number, treated as zero.\TESTFRACTION在方程环境内使用的同一行上产生了错误。

以下是一个工作版本,可作为尝试获取\makebox' accept, both, width and height using\widthof and\heightof` 的脚手架

\documentclass{standalone}
\usepackage[alignedleftspaceno]{amsmath}
\usepackage{calc}
\usepackage{tikz}

\newcommand
    {\TESTFRACTION}
    {%
        \makebox
            [\widthof{${}\left(\frac{a}{1}\right){}$}]
            {${}\left(\frac{b}{1}\right){}$}
    }

\begin{document}
    \begin{tikzpicture}
        \path node
            {%
                $%
                    \begin{gathered}
                        \TESTFRACTION
                    \end{gathered}
                $
            };
    \end{tikzpicture}
\end{document}

答案1

也等待其他人,但我认为,parbox最好做你想做的事:

我们与 parbox 合作:

\documentclass{standalone}
\usepackage[alignedleftspaceno]{amsmath}
\usepackage{calc}
\usepackage{tikz}

\newcommand
    {\TESTFRACTION}
    {%
        \parbox[c]
             [\heightof{${}\left(\frac{a}{1}\right){}$}][c]
             {\widthof{${}\left(\frac{a}{1}\right){}$}}
            {${}\left(\frac{b}{1}\right){}$}
    }

\begin{document}
    \begin{tikzpicture}
        \path node
            {
                $%
                    \begin{gathered}
                        \TESTFRACTION
                    \end{gathered}
                $
            };
    \end{tikzpicture}
\end{document}

我还认为,makebox您尝试使用的版本必须在图片环境中使用。这会使事情变得与您的需求不符。

答案2

Z 与此无关:calc相关计算在坐标中不可用,例如在 中\makebox(x,y){BOX}。顺便说一句,坐标应该是 的倍数,\unitlength而不是长度。

在这种情况下,你picture也可以利用传递长度的能力,\widthof但是\heightof是不可能的。

\documentclass{standalone}
\usepackage{amsmath}
\usepackage{picture}
\usepackage{tikz}

\newlength{\TFW}\newlength{\TFH}

\newcommand{\TESTFRACTION}{%
  \settowidth{\TFW}{$\left(\frac{a}{1}\right)$}%
  \settoheight{\TFH}{$\left(\frac{a}{1}\right)$}%
  \makebox(\TFW,\TFH){$\left(\frac{b}{1}\right)$}%
}

\begin{document}

\begin{tikzpicture}
\path node {%
   $
   \begin{gathered}
   \TESTFRACTION
   \end{gathered}
   $%
};
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容