按表格中的任意字符对齐

按表格中的任意字符对齐

如何将 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 个副本的连接。)nn^29801

以下代码生成两个这样的数组——第一个为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

使用alignatamsmath有两种不同的方式,取决于第一“列”的对齐方式:

在此处输入图片描述

\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}

相关内容