我正在用 LuaTeX 编写一个包含许多科学计数法数字的文档。
我不喜欢它,\cdot
因为它在数字两侧留下了太多空白。
我不喜欢它,{\cdot}
因为它留下的空间太小。使用\times
会使 ax 过大。
我想\times
在文档的开头重新定义以改变该命令所有后续出现的行为,我想每次输入时都得到一个较小的“x” \times
,并将其保持在中间高度。
我如何重新定义 的大小\times
?
我如何控制“x”两侧的空间和符号的粗细?
我知道我也可以使用siunitx
,但现在修改所有表格而不出现意外错误会变得更加困难。
我没有足够的知识来找出任何解决方案,但我尝试了两件我在谷歌上找到的方法:
\usepackage{scalerel}
\newcommand\Times{\scaleobj{0.6}{\times}}
\usepackage{relsize}
\newcommand{\Times}{\mbox{\smaller$\times$}}
但是它们把“x”留在底部并且非常薄。
答案1
我不会这么做。无论如何,我不会重新定义\times
,而是针对特定目的使用不同的名称。
\documentclass{article}
\usepackage{amsmath}
\usepackage{pict2e}
\usepackage{siunitx}
\makeatletter
\let\skan@times\times
\DeclareRobustCommand{\rtimes}{% you may want to redefine \times, but don't
\mathbin{%
\nonscript\mspace{-0.75\medmuskip}%
\mspace{1mu}\mathpalette\rtimes@\relax\mspace{1mu}%
\nonscript\mspace{-0.75\medmuskip}%
}%
}
\newcommand{\rtimes@}[2]{%
\vcenter{\hbox{%
\begingroup
\settoheight{\unitlength}{$#1\skan@times$}%
\setlength{\unitlength}{0.5\unitlength}%
\begin{picture}(1,1)
\roundcap
\linethickness{1\getfontdimen{8}{#1}{3}}
\Line(0,0)(1,1)\Line(1,0)(0,1)
\end{picture}%
\endgroup
}}%
}
\newcommand{\getfontdimen}[3]{%
\fontdimen#1
\ifx#2\displaystyle\textfont\else
\ifx#2\textstyle\textfont\else
\ifx#2\scriptstyle\scriptfont\else
\scriptscriptfont\fi\fi\fi #3%
}
\makeatother
\begin{document}
$5.12\times 10^{-49}$
$5.12\rtimes 10^{-49}$ $\scriptstyle5.12\rtimes 10^{-49}$
\num{5.12e-49}
\sisetup{exponent-product=\rtimes}
\num{5.12e-49}
\end{document}
这利用了\times
Computer Modern 中带有圆头的简单几何形状。使用其他字体时情况会有所不同。
siunitx
您应该考虑使用非常简单的语法输入此类数字,没有需要明确提及操作的符号,以便您可以随时改变主意。
厚度的控制是通过使用分数线的默认厚度来完成的,该默认厚度存储\fontdimen8
在数学组 3 中的字体中。
请注意,它\rtimes
不会在任何情况下都表现正常(例如,在括号旁边),但对于您的目的来说,它会表现正常。
答案2
这样可以保持相同的线条粗细,但会将其缩小到 0.6 倍。如果您需要在较小的数学样式中使用此功能,请告诉我。
\documentclass{article}
\usepackage{scalerel,stackengine}
\newcommand\shortminus{\ensuremath{\hstretch{0.6}{-}}}
\newcommand\Times{\mathbin{\!\rotatebox[origin=c]{45}{\stackinset{c}{}{c}{}{%
\rotatebox[origin=c]{90}{\shortminus}}{\shortminus}}\!}}
\begin{document}
$5.12\times10^{-49}$
$5.12\Times10^{-49}$
\end{document}
答案3
您可以使用scale
、margin
和raise
来形成所需的输出。
\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}
\usepackage{amsmath}
\usepackage{adjustbox}
\setmainfont{TeX Gyre Termes}
\setmathfont[FakeBold=4.0, version=bold]{TeX Gyre Termes Math}
\setmathfont[version=default]{TeX Gyre Termes Math}
\begin{document}
% use default math font
\mathversion{default}
\let\oldtimes\times
\renewcommand{\times}{%
\adjustbox{scale=0.6, margin=-0.2pt, raise=0.4pt}{$\mathversion{bold}\boldsymbol{\oldtimes}$}%
}
$a \oldtimes b$
$a \times b$
\end{document}