根据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 节点)。