我使用以下方法来减小尺寸
{\tiny
$$
\begin{array}{|c||c|c|c|c|c|c|c|c|c|c|c|c|}
但还是太大了。如何进一步减小尺寸?
答案1
这里有两个单独的建议:与其为了使数组适合可用的文本块而将字体大小减小到字母几乎无法辨认的程度(双关语!),不如 (i) 减少列间空白量和 (ii) 删除大部分(甚至所有)分隔 列的垂直线。这array
两种调整方法可以同时使用;使用其中一种并不妨碍使用另一种。当然,它们可以与更改 字体大小的命令(例如\scriptsize
和\tiny
)结合使用array
。
如果我没看错,您的示例有 13 个文本/数据列,因此有 12 个列间空格。LaTeX 使用参数宏
\arraycolsep
来存储环境中列间空白量的(一半) 。标准文档类(例如、和)array
中此参数的默认值非常大。对于字体大小为 到的文本,这可能是一个不错的值。但重要的是,LaTeX 确实article
report
book
5pt
10pt
12pt
不是如果您减小文本/数据列内容的字体大小,则会自动缩小此参数的值。因此,如果数据/文本被设置为5pt
(\tiny
) 或7pt
(\scriptsize
),您的表格看起来会包含大量空白。因此,您可能想尝试发出命令
\setlength\arraycolsep{2pt}
在序言中,立即减少
36pt
(即0.5in
)总数组宽度。没什么可大惊小怪的,对吧?此外,您将获得一个更好看的数组,因为列间空白不会淹没较小的数据和文本。通过此调整,您可能会发现不再需要将字体大小减小到像这样小的数值\tiny
。您可以采取的相关措施是排除LaTeX 默认在第一列前面和最后一列后面插入的垂直空白。为此,使用
\begin{array}{@{}|c||c|c|c|c|c|c|c|c|c|c|c|c|@{}}
或(更简洁)将数组设置为\begin{array}{@{}|c||*{12}{c|}@{}}
:请注意添加两个@{}
元素。(顺便说一句,假设第一列包含有关其他 12 列内容的信息,我建议您左对齐而不是将第一列居中;请参阅下面了解此想法的应用。)您可能还需要考虑消除数组中所有或至少几乎所有的 14 条垂直线。为什么?首先,每条垂直线占用
0.4pt
的空间(除非您或您加载的某个包更改了此值)。其次,如果文本/数据列的内容设置为 10pt、11pt 或 12pt 的字体大小,则 的线宽可能合适,但如果数字设置为或 的0.4pt
小尺寸,这些垂直线往往看起来相当压抑。7pt
5pt
问问自己:你真的需要所有 14 条垂直线吗?事实上,你需要任何垂直线为了让数组清晰易读?如果你选择删除所有 14 行,通过使用定义
\begin{array}{@{}l*{12}{c}@{}}
你会立即节省
5.6pt
整个数组宽度。这仍然没什么可担心的,对吧?如果消除全部垂直线对于您的品味来说太过激进,请考虑只使用最外面的两条垂直线以及将最左列与第二列分隔开的那条线。即,您可以将数组设置为
\begin{array}{@{}|l|*{12}{c}|@{}}
使用此设置,您(i)仍可节省
4.4pt
总数组宽度和(ii) 降低因那些看起来很重的线条而导致数组内容被淹没的风险。
答案2
David Carlisle 已经指出了一个答案,展示了如何指定任意字体大小。作为补充,下面介绍如何定义一个新的字体切换命令,该命令将使用与类选项、和\miniscule
相比分别减少 1pt 的字体大小和基线跳跃。\tiny
10pt
11pt
12pt
请注意,名称\miniscule
(但不是实际的大小/跳过值)取自memoir
类。另请注意,您必须使用可缩放字体(如 Latin Modern)才能正确显示 4pt 的字体大小。
\documentclass[10pt]{article}
\usepackage{lmodern}
\makeatletter
\ifcase \@ptsize \relax% 10pt
\newcommand{\miniscule}{\@setfontsize\miniscule{4}{5}}% \tiny: 5/6
\or% 11pt
\newcommand{\miniscule}{\@setfontsize\miniscule{5}{6}}% \tiny: 6/7
\or% 12pt
\newcommand{\miniscule}{\@setfontsize\miniscule{5}{6}}% \tiny: 6/7
\fi
\makeatother
\usepackage{lipsum}
\begin{document}
\tiny
\lipsum[1]
\miniscule
\lipsum[1]
\end{document}