如何将 RHS 与下面的“8”对齐?我尝试添加另一列,然后将“999998”向右对齐,将“00001”向左对齐,但存在很大的差距......
Table~\ref{tab:myNines} comes from the algebraic identitiy,
$(a-b)^2 = a^2 - 2ab + b^2$, taking $a=10^n$ and $b=1$.
\begin{table}[]
\centering
\begin{tabular}{l c l}
$9^2$ &$=$ &$81$\\
$99^2$ &$=$ &$9801$\\
$999^2$ &$=$ &$998001$\\
$9999^2$ &$=$ &$99980001$\\
$99999^2$ &$=$ &$9999800001$\\
$999999^2$ &$=$ &$999998000001$\\
$9999999^2$ &$=$ &$99999980000001$\\
$99999999^2$ &$=$ &$9999999800000001$\\
$999999999^2$ &$=$ &$999999998000000001$\\
$9999999999^2$ &$=$ &$99999999980000000001$
\end{tabular}
\caption{Note the Nines}
\label{tab:myNines}
\end{table}
答案1
小菜一碟列包及其D
列类型。
我确信列类型更常与或作为小数标记D
一起使用。但是,没有理由不使用其他符号(例如数字)作为输入和输出“小数标记”。.
,
8
另外:通过使用array
环境而不是tabular
环境,人们不必提供所有那些$
内联数学分隔符。
\documentclass{article}
\usepackage{dcolumn} % for 'D' column type
\begin{document}
Table~\ref{tab:myEights} comes from the algebraic identity $(a-b)^2 = a^2 - 2ab + b^2$, putting $a=10^n$ and $b=1$.
\begin{table}[h]
\centering
$\begin{array}{r @{{}={}} D{8}{8}{9.10}} % '9.10': 9 digits before '8', 10 digits after '8'
9^2 & 81\\
99^2 & 9801\\
999^2 & 998001\\
9999^2 & 99980001\\
99999^2 & 9999800001\\
999999^2 & 999998000001\\
9999999^2 & 99999980000001\\
99999999^2 & 9999999800000001\\
999999999^2 & 999999998000000001\\
9999999999^2 & 99999999980000000001
\end{array}$
\caption{Note the Eights} \label{tab:myEights}
\end{table}
\end{document}
附录-- 一些额外的考虑,无特定顺序>
如果您想要突出显示
8
数字,比如将其呈现为蓝色,那么您所需要更改的就是(a)加载包xcolor
并(b)替换D{8}{8}
为D{8}{\color{blue}8}
。如果您想要将行距增加30%,只需在 之前立即
array
发出指令即可。\renewcommand\arraystretch{1.3}
\begin{array}
如果您可以使用 LuaLaTeX 编译文档,则可以
array
通过 Luafor
循环以编程方式生成环境的内容。例如,要生成九行array
,您可以运行$\begin{array}{r @{{}={}} D{8}{8}{8.9}} \directlua{
for i=1,9 do
j = math.floor(10^i-1) % convert to 'integer' data type
tex.sprint ( j .. "^2 & " .. j*j .. "\\\\")
end
}
\end{array}$
第二附录:在上面的代码中,n
大于 10 的值可能会导致计算溢出,从而生成n^2
。(Lua 可以进行整数运算;但是,仍然会发生溢出。)如果您计划显示超过 10 行的数组,则可以切换到执行字符串操作生成。(请注意,对于大于 1 的n^2
整数,可以写成 的 n-1 个副本、 的 1 个副本、 的 n-1 个副本和 的 1 个副本的连接。)n
n^2
9
8
0
1
以下代码生成两个这样的数组——第一个为n=1
,第二个为n=20
。请注意,列类型的第二个参数的代码D
设置为\color{blue}8
,并且列类型的第三个参数D
是“即时”评估的——标记n-1
前的数字8
和标记n
后的数字8
——以保证紧凑的外观。
\documentclass{article}
\usepackage{xcolor} % for '\color' command
\usepackage{dcolumn} % for 'D' column type
% The Lua function 'myarray' does almost all of the work
\directlua{%
function myarray ( n ) % "n" should be an integer
tex.sprint ( "\\begin{array}{r @{{}={}} D{8}{\\color{blue}8}{"
.. n-1 .. "." .. n .."}}" )
for i=1,n do
tex.sprint ( string.rep ("9",i ) .. "^2 & " ..
string.rep ("9",i-1) .. "8" ..
string.rep ("0",i-1) .. "1\\\\" )
end
tex.sprint ( "\\end{array}" )
end
}
% LaTeX utility macro to access the Lua function
\newcommand\myarray[1]{$\directlua{myarray(#1)}$}
\begin{document}
\begin{table}[h]
\centering
\myarray{1}
\medskip
\myarray{20}
\caption{Note the nines and zeroes}
\label{tab:myNines}
\end{table}
\end{document}
答案2
只需在数字 8 前使用一个额外的对齐点即可。使用可@{}
删除列间空格。为了方便输入,我{}={}
自动在第一列和第二列之间插入。
\documentclass{article}
\begin{document}
Table~\ref{tab:myNines} comes from the algebraic identitiy,
$(a-b)^2 = a^2 - 2ab + b^2$, taking $a=10^n$ and $b=1$.
\begin{table}[htp]
\centering
$\begin{array}{ l @{{}={}} r@{}l }
9^2 & &81\\
99^2 & 9&801\\
999^2 & 99&8001\\
9999^2 & 999&80001\\
99999^2 & 9999&800001\\
999999^2 & 99999&8000001\\
9999999^2 & 999999&80000001\\
99999999^2 & 9999999&800000001\\
999999999^2 & 99999999&8000000001\\
9999999999^2 & 999999999&80000000001\\
\end{array}$
\caption{Note the Nines}
\label{tab:myNines}
\end{table}
\end{document}
你甚至可以让 TeX 进行计算。
\documentclass{article}
\usepackage{bigintcalc}
\ExplSyntaxOn
\cs_new_protected:Nn \__egreg_squarenines:n
{
\tl_set:Nx \l_tmpa_tl { \prg_replicate:nn { #1 } { 9 } }
\tl_set:Nx \l_tmpb_tl { \bigintcalcSqr { \l_tmpa_tl } }
\tl_replace_once:Nnn \l_tmpb_tl { 8 } { &8 }
\tl_put_right:Nx \l_tmpc_tl { \l_tmpa_tl^2 & \l_tmpb_tl \exp_not:N \\ }
}
\NewDocumentCommand{\makenines}{m}
{% #1 = number of rows
$\begin{array}{ l @{{}={}} r @{} l }
\tl_clear:N \l_tmpc_tl
\int_step_function:nN { #1 } \__egreg_squarenines:n
\l_tmpc_tl
\end{array}$
}
\ExplSyntaxOff
\begin{document}
Table~\ref{tab:myNines} comes from the algebraic identitiy,
$(a-b)^2 = a^2 - 2ab + b^2$, taking $a=10^n$ and $b=1$.
\begin{table}[htp]
\centering
\makenines{10}
\caption{Note the Nines}
\label{tab:myNines}
\end{table}
\begin{table}[htp]
\centering
\makenines{15}
\caption{Note the Nines}
\label{tab:myNines-big}
\end{table}
\end{document}
答案3
您可以\halign
直接使用 TeX 原语:
\halign{$#$\hfil${}={}$&\hfil#&#\hfil \cr
9^2 & &81 \cr
99^2 & 9&801 \cr
999^2 & 99&8001 \cr
9999^2 & 999&80001 \cr
99999^2 & 9999&800001 \cr
999999^2 & 99999&8000001 \cr
9999999^2 & 999999&80000001 \cr
99999999^2 & 9999999&800000001 \cr
999999999^2 & 99999999&8000000001 \cr
9999999999^2 & 999999999&80000000001 \cr
}
答案4
使用alignat
amsmath
有两种不同的方式,取决于第一“列”的对齐方式:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Table~\ref{tab:myNines} comes from the algebraic identitiy, $(a - b)^2 = a^2 - 2ab + b^2$, taking $a = 10^n$ and $b = 1$.
\begin{table}
\begin{alignat*}{3}
& 9^2 & {}={} && &81 \\
& 99^2 & {}={} && 9&801 \\
& 999^2 & {}={} && 99&8001 \\
& 9999^2 & {}={} && 999&80001 \\
& 99999^2 & {}={} && 9999&800001 \\
& 999999^2 & {}={} && 99999&8000001 \\
& 9999999^2 & {}={} && 999999&80000001 \\
& 99999999^2 & {}={} && 9999999&800000001 \\
& 999999999^2 & {}={} && 99999999&8000000001 \\
& 9999999999^2 & {}={} && 999999999&80000000001
\end{alignat*}
\begin{alignat*}{2}
9^2 & ={} & &81 \\
99^2 & ={} & 9&801 \\
999^2 & ={} & 99&8001 \\
9999^2 & ={} & 999&80001 \\
99999^2 & ={} & 9999&800001 \\
999999^2 & ={} & 99999&8000001 \\
9999999^2 & ={} & 999999&80000001 \\
99999999^2 & ={} & 9999999&800000001 \\
999999999^2 & ={} & 99999999&8000000001 \\
9999999999^2 & ={} & 999999999&80000000001
\end{alignat*}
\caption{Note the Nines}
\label{tab:myNines}
\end{table}
\end{document}