以下是非常糟糕的情况:
用红条来显示特别困扰我的事情:
这是一个更简单的情况,其中的问题不大,但也许人们可以由此推断出为什么情况开始变糟:
以下是产生问题示例的一些最少代码:
\documentclass{article}
\usepackage{amsmath}
\usepackage{physics}
\newcommand{\mycommand}[1]{\ensuremath{{#1}_{p}}}
\renewcommand{\vec}[1]{\ensuremath{\mathbf{#1}}}
\newcommand{\normv}[2][p]{%
\ensuremath{\norm{\vec{#2}}_{#1}}%
}
\begin{document}
\begin{equation*}
0 = \frac{x}{\mycommand{x}}
\end{equation*}
\begin{equation*}
\vec{x} = \frac{\vec{x}}{\normv{x}}
\end{equation*}
\end{document}
我从以下答案中得到了以下代码这个问题:
\newcommand{\alignedvfrac}[2]{%
\setbox0\hbox{$#1$} % put the numerator in box0
\dimen0=\wd0 % measure box0
\setbox1\hbox{$#2$} % put the denominator in box1
\dimen1=\wd1 % measure box1
\ifdim\wd0<\wd1 % if box0 is narrower than box1
\dfrac{#1\hfill}{#2} % put \hfill in the numerator
\else
\dfrac{#1}{#2\hfill} % otherwise put \hfill in the denominator
\fi
}
使用它没有帮助:
我不明白为什么它不起作用,因为看起来问题基本相同。你能帮我理解一下吗?
答案1
这是另一种解决方案,即在标准中添加幻影处方。由于分数线可能有点宽,可能需要进行校正(更多输入……但部分校正可以合并到标准命令中。此外,由于我没有安装物理包,因此我norm
借助以下工具定义了命令mathtools
:
\documentclass{article}
\usepackage{mathtools}
%\usepackage{physics}
\DeclarePairedDelimiter\norm{\lVert}{\rVert}
\newcommand{\mycommand}[1]{\ensuremath{{#1}_{p}}}
\renewcommand{\vec}[1]{\ensuremath{\mathbf{#1}}}
\newcommand{\normv}[2][p]{%
\ensuremath{{}_{\phantom{#1}}\norm{\vec{#2}}_{#1}}%
}
\newcommand{\normw}[2][p]{%
\ensuremath{{}_{\!\phantom{#1}}\norm{\vec{#2}}_{#1}\!}%
}
\begin{document}
\begin{equation*}
0 = \frac{x}{\mycommand{x}}
\end{equation*}
\begin{equation*}
\vec{x} = \frac{\vec{x}}{\normv{x}}
\end{equation*}
\begin{equation*}
\vec{x} = \frac{\!\vec{x}\!}{\normw{x}}
\end{equation*}
\end{document}