我的目标很简单:棋子的大图像,旁边有它们的名字。不过到目前为止,我还没有设法正确对齐它们。这是我的代码
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{xskak}
\usepackage{chessfss}
\usepackage{tabularray}
\begin{document}
\setboardfontsize{50pt}
\begin{center}
\begin{tblr}{X[c,m]X[c,m]}
\WhiteKingOnWhite & KING \\
\WhiteQueenOnWhite & QUEEN \\
\WhiteRookOnWhite & ROOK \\
\WhiteKnightOnWhite & KNIGHT \\
\WhiteBishopOnWhite & BISHOP \\
\WhitePawnOnWhite & PAWN
\end{tblr}
\end{center}
\end{document}
我以为错误是由于表格引起的,经过一番搜索我最终得到了 tabularray。但如您所见,它失败了。有什么想法吗?
答案1
通常,当一行的所有列只有一行文本时,valign 说明符m
、t
和b
不会产生任何影响,因为这些说明符会将多行文本的其中一条基线与表格行的整体基线对齐。在两列中,基线“中间”(= 唯一)行文本的基线与另一行文本的另一个“中间”(= 唯一)基线对齐,因此两列共享一个基线。字符设置在该基线之上。而当使用棋盘命令(如\WhiteKingOnWhite
)时,棋盘字符设置得更靠上,以使其位于棋盘方格的中心。结果是它们延伸得更高。
将表格内容按照基线相对于彼此的基线对齐,正如 tabularray 包的作者在第 5 页指出的那样文档对于那些习惯于使用文字处理器处理表格的人来说,这通常非常不直观。因此,它提供了另外两个 valign 说明符,h
或f
(页眉或页脚),它们只是将内容(不是基线内容)位于单元格顶部或底部。(由于棋子是两个单元格中较高的一个,因此在这里使用哪一个都没有关系。)
X[c,h]X[c,m]
您可以通过将 colspec 更改为或来实现将单词与片段中心对齐的功能X[c,h]X[c,m]
,这将使右列的基线与左列内容的中心对齐:
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{xskak}
\usepackage{chessfss}
\usepackage{tabularray}
\begin{document}
\setboardfontsize{50pt}
\begin{center}
\begin{tblr}{width=1.6in,colspec={X[c,f]X[c,m]}}
\WhiteKingOnWhite & KING \\
\WhiteQueenOnWhite & QUEEN \\
\WhiteRookOnWhite & ROOK \\
\WhiteKnightOnWhite & KNIGHT \\
\WhiteBishopOnWhite & BISHOP \\
\WhitePawnOnWhite & PAWN
\end{tblr}
\end{center}
\end{document}
(我将表格的宽度设置得比较窄,这样更容易看到单词与各个部分的对齐方式。这不是答案的一部分。)
得出:
如您所见,单词相对于棋子仍然没有完全垂直居中,这是因为棋子在设置为棋盘样式时会比基线高一点,从而在底部添加一些填充。因此,对于此特定表格,另一种方法是使用更基本的小雕像命令,正如 Ulrike 在评论中建议的那样:
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{xskak}
\usepackage{chessfss}
\usepackage{tabularray}
\begin{document}
\begin{center}
\begin{tblr}{width=1.6in,
colspec={X[c,h,font={\fontsize{50}{50}}]X[c,m]}}
\symking & KING \\
\symqueen & QUEEN \\
\symrook & ROOK \\
\symknight & KNIGHT \\
\symbishop & BISHOP \\
\sympawn & PAWN
\end{tblr}
\end{center}
\end{document}