格式化小数

格式化小数

假设我有一条很长的小数点(假设当我用 LaTeX 中的 12 号字体将其居中时,它的长度约为 6 英寸,因此

0.123719283791283718927489749875289345793485723495234572935239452348952384573481234879

我该如何让它看起来像

0.123 719 283 791 283 718 
  927 489 749 875 289 345 
  793 485 723 495 234 572 
  935 239 452 348 952 384 
  573 481 234 879

或者其他一些让小数看起来更美观的方法?有没有我可以使用的软件包?

答案1

扩展杰克的回答,这里有一个决定需要多少个三位数组的方法:

\documentclass[a4paper]{article}
\usepackage[autolanguage]{numprint}
\usepackage{calc}

\newlength{\ipwd}

\newcommand{\printlongdecimal}[2][4]{%
  \begingroup\npthousandsep{\hspace{0.3em}}
  \calcintegerpartwd{#2}%
  \minipage{\ipwd+\widthof{000}*#1+0.3em*(#1-1)}
    \hangindent=\ipwd \hangafter=1
    \numprint{#2}
    \endminipage\endgroup}
\newcommand\calcintegerpartwd[1]{%
  \setlength{\ipwd}{\widthof{\numprint{\splitnumber#1.\relax}.}}}
\def\splitnumber#1.#2\relax{#1}

\begin{document}
\printlongdecimal{1.22344344555000011}
\printlongdecimal[3]{1.22344344555000011}
\printlongdecimal[2]{1.22344344555000011}
\printlongdecimal[2]{1234.22344344555000011}
\printlongdecimal[2]{12345.22344344555000011}
\end{document}

可选参数\printlongdecimal是每行所需的三位数字组的数量。

在此处输入图片描述

答案2

根据 Peter Grill 的回答,如果您希望数字组与问题中的示例类似地对齐,则可以关闭包含数字的段落的缩进,将第一行拉回字符的宽度0.,并将左边距增加相同的量。包装成宏后,它可能看起来像

\newlength{\widthofzeroandperiod}
\settowidth{\widthofzeroandperiod}{0.}

\newcommand{\printlongdecimal}[1]{
\raggedright%
\noindent%
\hspace{-\widthofzeroandperiod}%
\leftskip\widthofzeroandperiod%
\rightskip0.7\textwidth%
\numprint{#1}
}

在示例中使用它:

In the following paragraph, you can see an absurdly long number, aligned in a pretty but meaningless way:

\printlongdecimal{0.123719283791283718927489749875289345793485723495234572935239452348952384573481234879}

将产生

以下是完整文档:

\documentclass{article}
\usepackage{numprint}
\usepackage{bigintcalc}
\npdecimalsign{\ensuremath{.}}
\npthousandsep{\hspace{0.3em}}

\newlength{\widthofzeroandperiod}
\settowidth{\widthofzeroandperiod}{0.}

\newcommand{\printlongdecimal}[1]{
\raggedright%
\noindent%
\hspace{-\widthofzeroandperiod}%
\leftskip\widthofzeroandperiod%
\rightskip0.7\textwidth%
\numprint{#1}
}

\begin{document}
In the following paragraph, you can see an absurdly long number, aligned in a pretty but meaningless way:

\printlongdecimal{0.123719283791283718927489749875289345793485723495234572935239452348952384573481234879}
\end{document}

答案3

使用numprint 包\npdecimalsign用于指定小数点分隔符为句点,并\npthousandsep{ }定义空格作为千​​位分隔符,并且还允许在数字内换行。

\documentclass{article}
\usepackage{numprint}
\npdecimalsign{\ensuremath{.}}%
\npthousandsep{ }%

\begin{document}
\begin{minipage}{0.35\linewidth}
\numprint{0.123719283791283718927489749875289345793485723495234572935239452348952384573481234879}
\end{minipage}
\end{document}

小型页面可让您以更紧凑的格式获取格式。

在此处输入图片描述

如果您需要的话,Jake 提供了一种缩进后续行的方法。

答案4

现在还有另一种方法,如果出于某种原因你不想使用额外的软件包,只需使用简单的 LaTeX。tabular在这种情况下,环境很有用:

    \documentclass{minimal}

    \begin{document}
        \begin{tabular}{ccccccccccccc}
      0&.&123&$\;$&719&$\;$&283&$\;$&791&$\;$&283&$\;$&718\\
        &&927&$\;$&489&$\;$&749&$\;$&875&$\;$&289&$\;$&345\\
        &&793&$\;$&485&$\;$&723&$\;$&495&$\;$&234&$\;$&572\\
        &&935&$\;$&239&$\;$&452&$\;$&348&$\;$&952&$\;$&384\\
        &&573&$\;$&481&$\;$&234&$\;$&879
        \end{tabular}
    \end{document}

例子

现在,这不适用于 documentclass article,空格变得非常宽。但一切都有解决办法!:) 要么@{}在列定义中插入:\begin{tabular}{c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}c}- 然后您可以通过替换为您需要的其他间距来直接控制间距$\;$,或者您可以完全删除包含间距字符的列($\;$在此示例中),让 LaTeX 设置间距。

另一种方法是使用tabbing环境:

\documentclass{article}

    \begin{document}
     \begin{tabbing}
    0.\= 123 \= 719 \= 283 \= 791 \= 283 \= 718\\
       \> 927 \> 489 \> 749 \> 875 \> 289 \> 345\\
       \> 793 \> 485 \> 723 \> 495 \> 234 \> 572\\
       \> 935 \> 239 \> 452 \> 348 \> 952 \> 384\\
       \> 573 \> 481 \> 234 \> 879\\
     \end{tabbing}
    \end{document}

示例制表符

相关内容