Macros 管理Latex中的有符号数字宏参数

Macros 管理Latex中的有符号数字宏参数,macros,latex,numeric,curly-braces,Macros,Latex,Numeric,Curly Braces,我已经签署了一些不必要的影响: x+-5 x--5 (我事先不知道常数是正的还是负的)。 我创建这些宏是为了解决这个问题: \def\plus#1{\ifthenelse{#1<0}{#1}{+#1}} \def\cutMinus-#1{#1} % to remove the minus in front of a negative number \def\minus#1{\ifthenelse{#1<0}{+\cutMinus#1}{-#1}} 我正确地理解了表达式: x-5

我已经签署了一些不必要的影响:

x+-5
x--5
(我事先不知道常数是正的还是负的)。 我创建这些宏是为了解决这个问题:

\def\plus#1{\ifthenelse{#1<0}{#1}{+#1}}
\def\cutMinus-#1{#1} % to remove the minus in front of a negative number
\def\minus#1{\ifthenelse{#1<0}{+\cutMinus#1}{-#1}}
我正确地理解了表达式:

x-5
目标:我希望我可以使用\加号和\减号来代替标准的+ans-如下所示(如果可能的话,不使用花括号,这会使输入的内容更长,更不清晰):

以下是我的测试:\plus、\cut减号和\减号有不同的行为,这取决于参数的给出方式

\def\const{-123456}\\
%
*1**x\plus{-12345} ****\\
%*2**x\plus -12345 ****\\ % compilation error : ! Missing number, treated as zero.
%*3**x\plus-12345 ****\\ % compilation error : ! Missing number, treated as zero.
*4**x\plus{\const} ****\\
*5**x\plus\const ****\\
%*6**\plus-\const ***\\ % compilation error : ! Missing number, treated as zero.
%
%*11**\cutMinus{-12345} ***\\ % compilation error :  ! Use of \cutMinus doesn't match its definition. ! Too many }'s.
*12**\cutMinus -12345 ***\\
*13**\cutMinus-12345 ***\\
%*14**\cutMinus{\const} ***\\ % compilation error :  ! Use of \cutMinus doesn't match its definition. ! Too many }'s.
%*15**\cutMinus\const ***\\ % compilation error :  ! Use of \cutMinus doesn't match its definition.
*16**\cutMinus-\const ***\\
%
*21**x\minus{-12345} ****\\
%*22**x\minus -12345 ****\\ % compilation error : ! Missing number, treated as zero.
%*23**x\minus-12345 ****\\ % compilation error : ! Missing number, treated as zero.
%*24**x\minus{\const} ****\\ % compilation error :  ! Use of \cutMinus doesn't match its definition.
%*25**x\minus\const ****\\ % compilation error :  ! Use of \cutMinus doesn't match its definition.
%*26**\minus-\const ***\\ % compilation error : ! Missing number, treated as zero.
%
我不理解所有这些错误。似乎\const和-12345并不等同。数字的内部编码问题? 如何修改宏以使其正常工作? 更准确地说: *\减号永远不能用宏\const工作 *\cutMinus,我用来去掉负数前面的减号的方法,对宏\const也不起作用。也许还有别的办法去掉“-”号吗? *我希望我能像这样使用\减号:x\减号\const给出:x+12345(其中\const等于-13245)

x\plus\const
x\minus\const
\def\const{-123456}\\
%
*1**x\plus{-12345} ****\\
%*2**x\plus -12345 ****\\ % compilation error : ! Missing number, treated as zero.
%*3**x\plus-12345 ****\\ % compilation error : ! Missing number, treated as zero.
*4**x\plus{\const} ****\\
*5**x\plus\const ****\\
%*6**\plus-\const ***\\ % compilation error : ! Missing number, treated as zero.
%
%*11**\cutMinus{-12345} ***\\ % compilation error :  ! Use of \cutMinus doesn't match its definition. ! Too many }'s.
*12**\cutMinus -12345 ***\\
*13**\cutMinus-12345 ***\\
%*14**\cutMinus{\const} ***\\ % compilation error :  ! Use of \cutMinus doesn't match its definition. ! Too many }'s.
%*15**\cutMinus\const ***\\ % compilation error :  ! Use of \cutMinus doesn't match its definition.
*16**\cutMinus-\const ***\\
%
*21**x\minus{-12345} ****\\
%*22**x\minus -12345 ****\\ % compilation error : ! Missing number, treated as zero.
%*23**x\minus-12345 ****\\ % compilation error : ! Missing number, treated as zero.
%*24**x\minus{\const} ****\\ % compilation error :  ! Use of \cutMinus doesn't match its definition.
%*25**x\minus\const ****\\ % compilation error :  ! Use of \cutMinus doesn't match its definition.
%*26**\minus-\const ***\\ % compilation error : ! Missing number, treated as zero.
%