将非常大的数字拆分成多行

将非常大的数字拆分成多行

可能重复:
换行不包含空格的长行

我正在用 LaTeX 写一份密码学报告,需要处理非常大的数字。我希望这些大数字出现在多行上,我的意思是当我写下我的大数字时,在编译之后,LaTeX 会将这个大数字放在一行上,但我们只能读取这个数字的开头。如何自动在多行上打印大数字?是否有标签可用或其他东西?谢谢

答案1

有一个非常好的软件包,序列分割最初设计用于 DNA/RNA 序列,但对于您的目的也非常有用。摘自文档:

\documentclass{article}
\usepackage{seqsplit}
\begin{document}

$\pi = \seqsplit{%
3.
1415926535 8979323846 2643383279 5028841971 6939937510 5820974944 5923078164
0628620899 8628034825 3421170679 8214808651 3282306647 0938446095 5058223172
5359408128 4811174502 8410270193 8521105559 6446229489 5493038196 4428810975
6659334461 2847564823 3786783165 2712019091 4564856692 3460348610 4543266482
1339360726 0249141273 7245870066 0631558817 4881520920 9628292540 9171536436
7892590360 0113305305 4882046652 1384146951 9415116094 3305727036 5759591953
0921861173 8193261179 3105118548 0744623799 6274956735 1885752724 8912279381
8301194912 9833673362 4406566430 8602139494 6395224737 1907021798 6094370277
0539217176 2931767523 8467481846 7669405132 0005681271 4526356082 7785771342
7577896091 7363717872 1468440901 2249534301 4654958537 1050792279 6892589235} 
\ldots$
\end{document}

在此处输入图片描述

答案2

我编写了一个小宏,可以自动\-在给定数字的每个数字后插入,正如 hlovdal 所建议的那样:

\makeatletter
\def\@bignumber#1#2{%
  \ifx#2\end
    #1\let\next\@gobble
  \else
    #1\hspace{0pt plus 1pt}\let\next\@bignumber
  \fi
  \next#2}
\newcommand{\bignumber}[1]{\@bignumber#1\end}
\makeatother

有了这个定义,您可以编写\bignumber{123456....},它应该打印数字并自动执行适当的换行。

编辑:替换\-\hspace{0pt plus 1pt}。这样可以省略行尾的连字符,并避免水平盒子过满。

答案3

您可以手动插入“单词拆分标记”(不确定这是否是正确的 Latex 术语),例如\-在每个数字后插入,然后 Latex 就可以根据需要拆分数字。也许可以制作一个 Latex 宏来执行此操作,但我对 Latex 的了解不够,所以我将改用命令行。

例子

\documentclass[a4paper,10pt]{scrartcl}
\usepackage{xltxtra}

\begin{document}

$\pi \approx \frac{22}{7} = NUMBER\ldots$

\end{document}

运行命令

echo "scale=200; 22/7" | bc -l | tr -d '\012\\' | sed 's/\(.\)/\1\\-/g' | xclip -i

然后粘贴剪贴板内容替换上面的NUMBER,得到以下输出:

π ≈ 22/7 = 3.1428571428571428571428571428571428571428571428571428571428571-
428571428571428571428571428571428571428571428571428571428571428571428571428-
5714285714285714285714285714285714285714285714285714285714285714...

\-在每个数字后添加的命令是sed 's/\(.\)/\1\\-/g'

答案4

您只需在数字内使用\newline或其别名即可强制换行。\\

相关内容