siunitx 中的粗体指数

siunitx 中的粗体指数

我有一张由脚本生成的大型数字表,我用siunitx它来很好地格式化输出。我想用粗体突出显示数字的重要部分,即指数,以便它脱颖而出(数字本身并不像数量级那么重要,但科学记数法使指数不那么明显,就像上标一样)。

我正在使用这些设置

\usepackage{siunitx}
\sisetup{
         exponent-product = \cdot,
         round-mode = figures,
         round-precision = 1}

\num{2.12e-14}

在此处输入图片描述

但我更喜欢视觉上的

$2\cdot 10^{\mathbf{-14}}$

编辑:有关真实示例,请参阅本附录中的两个大表格pdf 文档

在此处输入图片描述

答案1

如果您可以使用 LuaLaTeX 而不是 pdfLaTeX,那么创建一个专用的 Lua 函数并设置一个关联的 TeX“包装器宏”可能比尝试破解包\num的宏更容易siunitx。在下面的示例中,包装器宏称为\mynum,其语法设置为模仿\num宏的行为。

关于要格式化的数字的唯一假设是它们的指数部分非空,即数字包含子e<nn>字符串,其中<nn>是正整数或负整数。在此设置下,诸如的数字是(并且也是)e1234的有效输入。\mynum\num

在此处输入图片描述

\documentclass{article}

\usepackage{siunitx}
\sisetup{exponent-product = \cdot,
         round-mode       = places}

%% Lua-side code
\usepackage{luacode}
\begin{luacode}
function formatnum ( prec, num )
if string.find ( num , "[%d%.]+[eE]" ) then
   mant = string.format( "%."..prec.."f".."\\cdot", string.match ( num, "[%-%+]?[%d%.]+" ) )
else 
   mant = ""
end
expo = string.gsub ( num, ".-[eE]([%-%+]?)(%d+)", "10^{%1\\mathbf{%2}}" )
return ( tex.sprint( "$"..mant..expo.."$" ))
end
\end{luacode}
%% TeX-side code
\newcommand\mynum[2]{\directlua{ formatnum ( \luastring{#1}, \luastring{#2})}}

\begin{document}
\def\NumA{2.12e-14}
\def\NumB{12.34e56}
\def\NumC{e1234}

\num[round-precision=0]{\NumA}

\mynum{0}{\NumA}

\medskip
\num[round-precision=2]{\NumB}

\mynum{2}{\NumB}

\medskip
\num[round-precision=4]{\NumC}

\mynum{4}{\NumC}
\end{document}

附录:如果你想用红色突出显示指数,而不是使用大胆的,您需要将\\mathbf{%2}Lua 代码更改为\\color{red}%2。当然,需要加载xcolorcolor包才能访问该\color宏。

在此处输入图片描述

\mynum{0}{2.12e-14}, \mynum{2}{-12.34e56}, \mynum{0}{e1234}

答案2

你可以注射\mathbf在正确的位置。我仍然建议你不是使用这个,因为如果改变的话注定会失败siunitx

\documentclass{article}
\usepackage{siunitx}

\ExplSyntaxOn

\cs_set_protected:Npn \__siunitx_number_format_final_exponent: {
  \prop_get:NnN \l__siunitx_number_out_prop { exponent }
    \l__siunitx_tmpa_tl
  \tl_if_empty:NTF \l__siunitx_output_exponent_tl
    {
      \tl_set:Nx \l__siunitx_tmpa_tl
      %{ ^ { \exp_not:V \l__siunitx_tmpa_tl } }
       { ^ { \exp_not:N \mathbf { \exp_not:V \l__siunitx_tmpa_tl } } }
      \tl_put_left:NV \l__siunitx_tmpa_tl \l__siunitx_exponent_base_tl
    }
    {
      \tl_set:Nx  \l__siunitx_tmpa_tl
        {
          \exp_not:V \l__siunitx_output_exponent_tl
          \exp_not:N \mathord
          \exp_not:V  \l__siunitx_tmpa_tl
        }
    }
  \prop_put:NnV \l__siunitx_number_out_prop { exponent-result }
    \l__siunitx_tmpa_tl
}

\ExplSyntaxOff

\begin{document}

\num{2.12e-14}

\num{12.34e56}

\num{e1234}

\end{document}

在此处输入图片描述

相关内容