后续行动这个答案,我想创建一个\num
基于的命令,使二元运算符左侧的空格无效,并保留其右侧的空格。
换句话说,我需要保留减号,在第一行下面的例子,与页边距对齐,同时在它和数字之间留有空白,3
就像第二行减号周围的空白一样。
\documentclass{article}
\usepackage{siunitx}
\usepackage[showframe]{geometry}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\snum}{O{}m}
{
\mathbin
{
\fp_compare:nTF { #2 >= 0 }
{ + }
{ - }
}
\num[#1]{ \fp_eval:n { abs(#2) } }
}
\ExplSyntaxOff
\parindent=0pt
\begin{document}
\def\numb{-3}
$\snum{\numb}$\\
${}\snum{\numb}$
\end{document}
答案1
\mynum
您可能对该答案中定义的宏感兴趣。
\documentclass{article}
\usepackage{showframe} % draw framelines around text block
\setlength\parindent{0pt}
\usepackage{siunitx} % for '\num' macro
\usepackage{amsmath} % for '\ensuremath' macro
\newcommand\mynum[1]{\ensuremath{\mskip-\medmuskip{}\num[retain-explicit-plus]{#1}}}
\begin{document}
\obeylines % just for this example
\num{-3}
\num[retain-explicit-plus]{+8}
$\mskip-\medmuskip{}-3$
\mynum{-3}
\mynum{+8}
\end{document}
答案2
mathbin 有\medmuskip
两边,因此您要么想要一个左侧带有 -\medmuskip 的 mathbin,要么想要一个右侧带有 \medmuskip 的 \mathord。我在这里选择前者。
\documentclass{article}
\usepackage{siunitx}
\usepackage[showframe]{geometry}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\snum}{O{}m}
{
\mathbin
{
\fp_compare:nTF { #2 >= 0 }
{ + }
{ - }
}
\num[#1]{ \fp_eval:n { abs(#2) } }
}
\ExplSyntaxOff
\parindent=0pt
\begin{document}
\def\numb{-3}
$\snum{\numb}$\\
${}\snum{\numb}$\\
${}\mskip-\medmuskip\snum{\numb}$
\end{document}