如何使列宽相等?

如何使列宽相等?

根据Leo的回答但我删除了一列并\big)用垂直线替换了。现在我想让所有列的宽度相同。该怎么做?

在此处输入图片描述

\documentclass{article}
\usepackage{amssymb}

\begin{document}

\[
x^3 - x + 1 = (x-1)(x^2+x) + 1 \in \mathbb{F}_3[x]
\]

\[
\renewcommand\arraystretch{1.2}
\begin{array}{*{6}{r}}
&
    &
        &
            1&
                1&
                    0\\\cline{3-6}
1&
    -1&
        \multicolumn{1}{|r}{1}&
                                0&
                                    -1&
                                        1\\
&
    & 
        1&
            -1&
                &
                    \\\cline{3-5}
&
    &
        &
            1&
                -1&
                    \\
&
    &
        &
            1&
                -1&
                    \\\cline{4-6}
&
    &
        &
            &
                &
                    1\\
\end{array}
\]

\end{document}

我使用 得到了解决方案\begin{array}{*{6}{>{\hfill}m{1cm}}},但是还有其他解决方案吗?

答案1

我更喜欢以下内容,但这是一个品味问题:

\usepackage{array}
\newcolumntype{R}[1]{>{\hbox to #1\bgroup\hfill$}c<{$\egroup}}

...
\[
\renewcommand\arraystretch{1.2}
\newcommand\x[1]{\multicolumn{1}{|r}{#1}} % just not to clutter the array
\begin{array}{*{6}{R{1.5em}}}
  &    &       & 1  &  1 & 0 \\\cline{3-6}
1 & -1 & \x{1} & 0  & -1 & 1 \\
  &    &    1  & -1 &    &   \\\cline{3-5}
  &    &       &  1 & -1 &   \\
  &    &       &  1 & -1 &   \\\cline{4-6}
  &    &       &    &    & 1 
\end{array}
\]

语法\hbox to <dimen>是低级 TeX,通常不推荐在 LaTeX 中使用,因为它会对颜色管理产生灾难性的影响。但是,由于这是在单元格的开头完成的,所以应该不会有问题。其构造\hbox to 1.5em{\hfil x}类似于\makebox[1.5em][r]{x},但可以分为两部分:\hbox to 1.5em\bgroup开头和\egroup结尾,因此可以使用 来收集“参数”大批的语法。

可以通过以下方式获得类似的设置

\newcolumntype{R}[1]{>{\raggedleft\arraybackslash$}p{#1}<{$}}

答案2

\documentclass{article}
\usepackage{amssymb,array,ragged2e}
\newcolumntype{R}[1]{>{\RaggedLeft}p{#1}}
\begin{document}

\[ x^3 - x + 1 = (x-1)(x^2+x) + 1 \in \mathbb{F}_3[x] \]

\[
\renewcommand\arraystretch{1.2}
\begin{array}{*6{R{1em}}}
...

答案3

使用{NiceArray}of nicematrix,您有一个键columns-width。当此键与值 一起使用时auto,数组的所有列都具有相同的宽度,等于数组最宽单元格的宽度。

\documentclass{article}
\usepackage{amssymb}
\usepackage{nicematrix}

\begin{document}

\[
x^3 - x + 1 = (x-1)(x^2+x) + 1 \in \mathbb{F}_3[x]
\]

\[
\renewcommand\arraystretch{1.2}
\begin{NiceArray}{rrrrrr}[columns-width=auto]
&
    &
        &
            1&
                1&
                    0\\\cline{3-6}
1&
    -1&
        \multicolumn{1}{|r}{1}&
                                0&
                                    -1&
                                        1 \\
&
    & 
        1&
            -1&
                &
                    \\\cline{3-5}
&
    &
        &
            1&
                -1&
                    \\
&
    &
        &
            1&
                -1&
                    \\\cline{4-6}
&
    &
        &
            &
                &
                    1\\
\end{NiceArray}
\]

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容