这是我的代码,我希望所有线条都与箭头对齐。有人能帮我吗?谢谢。
1 $\longrightarrow$ trillion\\
7 $\longrightarrow$ hundred billion\\
8 $\longrightarrow$ ten billion\\
4 $\longrightarrow$ billion\\
6 $\longrightarrow$ hundred million\\
5 $\longrightarrow$ ten million\\
3 $\longrightarrow$ million\\
2 $\longrightarrow$ hundred thousands\\
0 $\longrightarrow$ ten thousands\\
1 $\longrightarrow$ thousands\\
4 $\longrightarrow$ hundreds\\
5 $\longrightarrow$ tens\\
9 $\longrightarrow$ ones\\
答案1
简单的方法是在第一行添加一个\noindent
。但是,这不能解释前导数字的不同宽度,特别是如果超过一位数字或前导不是数字,例如小数点。
有很多方法可以实现这一点。这里有一种方法可以在箭头周围留出适当的数学间距,并且不会在中途跨越页面边界。
\documentclass{article}
\usepackage{tabstackengine}
\begin{document}
\noindent\alignLongunderstack{
1${}\longrightarrow{}$& trillion\\
7${}\longrightarrow{}$& hundred billion\\
8${}\longrightarrow{}$& ten billion\\
4${}\longrightarrow{}$& billion\\
6${}\longrightarrow{}$& hundred million\\
5${}\longrightarrow{}$& ten million\\
3${}\longrightarrow{}$& million\\
2${}\longrightarrow{}$& hundred thousands\\
0${}\longrightarrow{}$& ten thousands\\
1${}\longrightarrow{}$& thousands\\
4${}\longrightarrow{}$& hundreds\\
5${}\longrightarrow{}$& tens\\
9${}\longrightarrow{}$& ones}
\end{document}
答案2
您可能有几个数字需要解释。
\documentclass{article}
\usepackage{amsmath}
\usepackage{siunitx} % also loads xparse and expl3
\ExplSyntaxOn
\NewDocumentCommand{\shownumber}{sO{c}m}
{
\IfBooleanTF { #1 }
{
\num{#3}
}
{
\ensuremath{\forest_shownumber:nn { #2 } { #3 } }
}
}
\seq_new:N \l__forest_shownumber_seq
\cs_new_protected:Nn \forest_shownumber:nn
{
\seq_set_split:Nnn \l__forest_shownumber_seq { } { #2 }
\begin{aligned}[#1]
\seq_indexed_map_function:NN \l__forest_shownumber_seq \__forest_shownumber_digit:nn
\end{aligned}
}
\cs_new_protected:Nn \__forest_shownumber_digit:nn
{
#2 & \longrightarrow
\text { \__forest_shownumber_name:n { \seq_count:N \l__forest_shownumber_seq - #1 } } \\
}
\cs_new:Nn \__forest_shownumber_name:n
{
\int_case:nn { #1 }
{
{0}{units}
{1}{tens}
{2}{hundreds}
{3}{thousands}
{4}{ten ~ thousands}
{5}{hundred ~ thousands}
{6}{million}
{7}{ten ~ million}
{8}{hundred ~ million}
{9}{billion}
{10}{ten ~ billion}
{11}{hundred ~ billion}
{12}{trillion}
%...
}
}
\ExplSyntaxOff
\begin{document}
\shownumber*{1784653201459}
\[
\shownumber{1784653201459}
\]
\shownumber*{123456} is \shownumber[t]{123456}
\end{document}
该\shownumber
宏有一个 *-变体(仅打印数字);可选参数用于显示版本,并告诉传递给垂直对齐方式是什么aligned
(值为c
、默认t
或b
)。
我们用数字填充一个序列,然后使用索引映射它以检索数字位置的文本含义。
我停在“万亿”处,但你可以轻松地延长这个列表。
答案3
在使用时,tabular
我会更进一步:使用两列,代码会更短一些:
\documentclass{article}
\usepackage{array}
\begin{document}
\begin{tabular}{@{} r @{${}\longrightarrow{}$} l @{}}
1 & trillion\\
7 & hundred billion\\
8 & ten billion\\
4 & billion\\
6 & hundred million\\
5 & ten million\\
3 & million\\
2 & hundred thousands\\
0 & ten thousands\\
1 & thousands\\
4 & hundreds\\
5 & tens\\
9 & ones
\end{tabular}
\end{document}
答案4
我会将代码块放入单列、左对齐的tabular
环境中:
\documentclass{article}
\begin{document}
\begin{tabular}{@{} l @{}}
1 $\longrightarrow$ trillion\\
7 $\longrightarrow$ hundred billion\\
8 $\longrightarrow$ ten billion\\
4 $\longrightarrow$ billion\\
6 $\longrightarrow$ hundred million\\
5 $\longrightarrow$ ten million\\
3 $\longrightarrow$ million\\
2 $\longrightarrow$ hundred thousands\\
0 $\longrightarrow$ ten thousands\\
1 $\longrightarrow$ thousands\\
4 $\longrightarrow$ hundreds\\
5 $\longrightarrow$ tens\\
9 $\longrightarrow$ ones
\end{tabular}
\end{document}