没有表格的表格?

没有表格的表格?

我在表格环境中遇到了很多困难。当然,我尝试做很多事情,包括水平和垂直居中、在不同的单元格中使用不同的字体以及在不同的单元格中使用不同的字体大小。

最糟糕的情况是,我可以将表格创建为图片文件,然后将其嵌入,但这会让我感到不舒服,因为最终用户将无法通过它进行文本搜索。除了表格环境之外,还有其他制作表格的方法吗?我想尝试其他选项。当然,其他软件包也可以。

如果有办法在页面上的任何坐标处开始写文本,那就太好了。然后我可以使用绘图功能绘制线条来制作单元格,然后手动将文本放入其中。这并不好看,我的意思是它不会自动居中或调整到任何东西,但目前没什么大不了的。

顺便说一下,我在 Windows 7 Pro 64 位系统上使用 Xelatex 在 TexniCenter 2.02 64 位和 MikTex 发行版上进行编译。这是我目前为表格编写的代码。抱歉,有点乱。

    \setlength{\parindent}{0ex}
\begin{tabular}[c]{| p{1.85cm} | p{1.85cm} | p{1.85cm} | p{1.85cm} | p{1.85cm} | p{1.85cm} | p{1.85cm} |}
    \hline
     & \vspace{3mm} \cl{addition} & \vspace{3mm} \cl{subtraction} & \vspace{3mm} \cl{multiplication} & \vspace{3mm} \cl{division} & \vspace{3mm} \cl{exponentiation} & \vspace{3mm} \cl{rootification} \\ \hline 
    \vspace{3mm} \cl{Vortigenu} & \vspace{3mm} \cl{\VTGN{+}} & \vspace{3mm} \cl{\VTGN{-}} & \vspace{3mm} \cl{\VTGN{*}} & \vspace{3mm} \cl{\VTGN{/}} & \vspace{3mm} \cl{\VTGN{\char"5E}} & \vspace{3mm} \cl{\VTGN{\char"40}} \\ \hline
        \vspace{3mm} \cl{Earth} & \vspace{3mm} \cl{+} & \vspace{3mm} \cl{-} & \vspace{3mm} \cl{$\times$} & \vspace{3mm} \cl{$\div$} & \vspace{3mm} \cl{?} & \vspace{3mm} \cl{?} \\ \hline
\end{tabular}
\setlength{\parindent}{8ex}

页面尺寸为 28 厘米 x 20 厘米,每边有 2 厘米边距。以下是在顶层 tex 文件中定义的 2 个自定义命令。

\newcommand{\cl}[1]{\centerline{#1}}
\newcommand{\VTGN}[1]{\setmainfont{Vortigenu}{#1}\setmainfont{Times New Roman}}

不幸的是,使用\VTGN{}似乎会在每个单元格中创建一个额外的空白行,使它们比必要的更粗。当我尝试缩放\scalefont{2}vortigenu 单元格的字体(使用)同时保持其他单元格的字体大小相同时,这个额外的空白垂直空间会按比例变大。顺便说一句,这只影响一个单元格,而所有其他单元格都没有更大的尺寸,尽管我从未在任何地方放置过\normalsize

答案1

不要进行过多的视觉格式化。相反,应预先定义一些相关的表格参数(例如,将列内容居中、行高等),然后创建一个精简且相当易于阅读的表格。

在下面的示例中,我创建了\VTGN宏的虚拟定义,以使代码可编译。您会注意到代码中完全没有\vspace{3mm}和指令。观察用于调整行高大小的用法:它是一个深度低于文本基线、高度高于基线的对象。(支柱的\cl\bigstrut4ex6ex全部的因此高度为10pt。)根据需要调整这些参数以获得所需的间距。支柱的宽度为0pt;因此不可见。\bigstrut每行一个就足够了。

在此处输入图片描述

\documentclass{article}
\usepackage[paperheight=28cm, paperwidth=20cm, margin=2cm]{geometry}
\newcommand\VTGN[1]{#1} %% just so that this example compiles
\usepackage{tabularx}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\newcommand\bigstrut{\rule[-4ex]{0pt}{10ex}}
\begin{document}
\noindent
\begingroup
\setlength\tabcolsep{0.1pt} % default: 6pt
\begin{tabularx}{\textwidth}{ | *{7}{Y|} }
\hline
\bigstrut & addition & subtraction & multiplication & division & exponentiation & rootification \\ 
\hline 
Vortigenu \bigstrut & \VTGN{+} & \VTGN{-} & \VTGN{*} & \VTGN{/} & \VTGN{\char"5E} & \VTGN{\char"40} \\ 
\hline
Earth \bigstrut & + & $-$ & $\times$ & $\div$ & ? & ? \\ 
\hline
\end{tabularx}
\endgroup
\end{document}

附录:我刚刚注意到您发布了以下\VTGN宏的定义:

\newcommand{\VTGN}[1]{\setmainfont{Vortigenu}{#1}\setmainfont{Times New Roman}}

这种方式使用\setmainfont效率很低,也相当复杂;请参阅用户指南第 5 节字体规格包以更深入地解释这一说法。我建议您在序言中提供以下命令:

\newfontfamily\vtgn{Vortigenu}
\newcommand\VTGN[1]{{\vtgn #1}} % Note the double curly braces

此定义\VTGN使得无需执行\setmainfont两次。此外,它无需知道主文档的字体是什么即可工作。

相关内容