如何在 LaTeX 中制作一个完美的正方形表格?每个单元格中只有一个字符。我想打印一个漂亮的直白的白板如下所示。
答案1
这是实现此目的的一种方法。
\newcount\trrow
\newcount\trcol
\makeatletter
\def\maketrrow{%
\begingroup
\loop\ifnum\trcol<26
\count@\numexpr \trrow + \trcol + `A\relax
\ifnum\count@>`Z
\advance\count@-26
\fi
\hbox to\baselineskip{\hss\char\count@\hss}%
\advance\trcol\@ne
\repeat
\endgroup
}
\newcommand\tabularecta[1][\baselineskip]{%
\vbox{%
\fontsize{\f@size}{#1}\selectfont
\hsize\dimexpr 27\baselineskip + .4\p@ \relax
\parindent\z@
\parskip\z@
\trrow\z@
\leavevmode
\hbox to\baselineskip{\hfil}%
\strut\vrule
\maketrrow
\par
\hrule
\loop\ifnum\trrow<26
\leavevmode
\trcol\z@
\hbox to\baselineskip{\hss\char\numexpr\trrow + `A\relax\hss}%
\strut\vrule
\maketrrow
\par
\advance\trrow\@ne
\repeat
}%
}
\makeatother
只需将 放置在\tabularecta
您希望它出现的任何位置\small
即可。您可以根据需要使用 来更改字体大小。由于间距完全基于基线,因此您只需使用 来更改它\fontsize{..}{..}\selectfont
,或者为了方便起见,您可以给出\tabularecta
一个可选参数,即您希望每个单元格的大小。
实现过程很简单。它先遍历行,然后遍历列,放置大小合适的框,并在其中填充所需的字符。
答案2
在 ConTeXt 中,你可以让每个单元格具有相同的高度和宽度
\setupTABLE[each][each][width=2em,height=2em,align={middle,middle}]
如果你想了解如何以循环形式生成输出,请查看类似的例子在上下文 wiki 上。
答案3
tblr
使用我的新 LaTeX3 软件包环境,一切都变得非常简单tabularray
:
\documentclass[11pt]{article}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{
rows = {3em, rowsep = 2pt},
columns = {3em, colsep = 2pt},
cells = {m,c},
hlines,
vlines,
}
A & B & C & D & E & F & G \\
B & C & D & E & F & G & A \\
C & D & E & F & G & A & B \\
D & E & F & G & A & B & C \\
E & F & G & A & B & C & D \\
F & G & A & B & C & D & E \\
G & A & B & C & D & E & F \\
\end{tblr}
\end{document}