我在表格环境中遇到了很多困难。当然,我尝试做很多事情,包括水平和垂直居中、在不同的单元格中使用不同的字体以及在不同的单元格中使用不同的字体大小。
最糟糕的情况是,我可以将表格创建为图片文件,然后将其嵌入,但这会让我感到不舒服,因为最终用户将无法通过它进行文本搜索。除了表格环境之外,还有其他制作表格的方法吗?我想尝试其他选项。当然,其他软件包也可以。
如果有办法在页面上的任何坐标处开始写文本,那就太好了。然后我可以使用绘图功能绘制线条来制作单元格,然后手动将文本放入其中。这并不好看,我的意思是它不会自动居中或调整到任何东西,但目前没什么大不了的。
顺便说一下,我在 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
\bigstrut
4ex
6ex
全部的因此高度为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
两次。此外,它无需知道主文档的字体是什么即可工作。