包含命令的方程内的间距

包含命令的方程内的间距

我正在使用随机数生成相对简单的方程式供学生解答。

例如:-5n - 3 = 7

但是当我在方程式中使用随机数和/或命令时,我得到了不想要的间距。它仍然可以使用,但看起来不太好看。

修复此问题最简单的方法是什么?

我猜测该问题与在等式中放入命令有关,但我不确定。

\documentclass{article}

\usepackage{pgf}

\usepackage{pgffor}
    \pgfmathsetseed{\number\pdfrandomseed}

\newcommand{\InitVariables}
{   \pgfmathrandominteger{\A}{2}{10}
    \pgfmathrandominteger{\B}{-10}{10}
    \pgfmathtruncatemacro{\B}{\B}
    \pgfmathsetmacro{\AbsoluteB}{\ifnum\B<0{int(-1*\B)}\fi}
    \pgfmathrandominteger{\Answer}{0}{11}
    \pgfmathsetmacro{\C}{int(\A*\Answer + \B)}
    }

\setlength{\parindent}{0cm}

\begin{document}

\huge

BAD SPACING ON LEFT SIDE
\InitVariables

$\A x \ifnum\B<0{\B}\else{+\B}\fi = \C$

\InitVariables

$\A x \ifnum\B<0{\B}\else{+\B}\fi = \C$

\vskip 1cm

DESIRED SPACING ON LEFT SIDE

$2x-5=13$

$7x+8=36$

\vskip 1cm

FAILED ATTEMPT TO FIX SPACING

\InitVariables

$\A x \ifnum\B<0{-\AbsoluteB}\else{+\B}\fi = \C$

\InitVariables

$\A x \ifnum\B<0{-\AbsoluteB}\else{+\B}\fi = \C$

\end{document}

各种间距

提前致谢。 :)

答案1

这里的问题是{+\B},使用 和\B来表示负值,而不是二元-运算符。 周围的括号+B会改变其间距,就像您编写 一样\mathord{+\B}

在原子中,-B的排版方式与 类似-2, 为-一元运算符, 两边的间距与 相同B。也就是说,在右侧, 恰好是正确的,但在左侧, 和 之间的间距A与和{-B}之间的间距相同。AB

Bernard 已经发布了一个可行的解决方案,但我认为可以补充一些关于为什么会发生这种情况的解释。

答案2

您必须考虑到左侧的+ 为 *binary {}` 来解决您的问题:symbols, that require something on either side, so you just have to add an empty

\documentclass{article}

\usepackage{pgf}

\usepackage{pgffor}
    \pgfmathsetseed{\number\pdfrandomseed}

\newcommand{\InitVariables}
{ \pgfmathrandominteger{\A}{2}{10}
    \pgfmathrandominteger{\B}{-10}{10}
    \pgfmathtruncatemacro{\B}{\B}
    \pgfmathsetmacro{\AbsoluteB}{\ifnum\B<0{int(-1*\B)}\fi}
    \pgfmathrandominteger{\Answer}{0}{11}
    \pgfmathsetmacro{\C}{int(\A*\Answer + \B)}
    }

\setlength{\parindent}{0cm}

\begin{document}

\huge

BAD SPACING ON LEFT SIDE
\InitVariables

$\A x \ifnum\B<0{\B}\else{+\B}\fi = \C$

\InitVariables

$\A x \ifnum\B<0{\B}\else{+\B}\fi = \C$

\vskip 1cm

DESIRED SPACING ON LEFT SIDE

$2x-5=13$

$7x+8=36$

\vskip 1cm

SUCCESSFUL ATTEMPT TO FIX SPACING

\InitVariables

$\A x \ifnum\B<0{{}-\AbsoluteB}\else{{}+\B}\fi = \C$

\InitVariables

$\A x \ifnum\B<0{{}-\AbsoluteB}\else{{}+\B}\fi = \C$

\end{document} 

在此处输入图片描述

答案3

TeX 条件语句的语法没有需要在真假枝周围加支架。更准确地说,加支架可能会造成伤害!

有什么害处?嗯,$1{+2}$与 不同$1+2$,因为 前者{+2}被视为单个单位,而符号被视为一元的,因此附加在数字上,因为在子公式中它前面没有任何内容。

如果是负数,则需要\B按原样打印,因为它已经配备了符号;+如果是正数,则输出 a。

我将添加如何在它为零时不打印它,但您可以自己决定。

\documentclass{article}

\usepackage{pgf}
\usepackage{pgffor}

\pgfmathsetseed{\number\pdfrandomseed}

\newcommand{\InitVariables}{%
  \pgfmathrandominteger{\A}{2}{10}%
  \pgfmathrandominteger{\B}{-10}{10}%
  \signedvar{\B}{\B}%
  \pgfmathrandominteger{\Answer}{0}{11}%
  \pgfmathsetmacro{\C}{int(\A*\Answer + \B)}%
}
\newcommand{\signedvar}[2]{%
  \edef#1{%
    \ifnum#1=0 \else
      \ifnum#1<0 \else +\fi #1%
    \fi
  }%
}

\setlength{\parindent}{0cm}

\begin{document}

\InitVariables

$\A x \B = \C$

\InitVariables

$\A x \B = \C$

\InitVariables

$\A x \B = \C$

\InitVariables

$\A x \B = \C$

\end{document}

在此处输入图片描述

\signedvar如果您想在文本中保留“无符号”值,该宏有两个参数。

相关内容