我在 LyX 中创建一个表格,每个单元格都有一个字符。问题是,浪费了很多空间,因为每个单元格都有一些我想减少的填充点。一个单元格现在足够大,可以容纳 3 个字符,但我需要它们比字符本身稍大一点。理想目标是让所有单元格都呈大小相同的正方形。
附上一张截图,让你了解我想要完成的目标(它们不是很规律,因为我的绘画技巧很差:P)
我尝试过这个线程表格中的列和行填充但没有运气:细胞仍然很宽。
我能做些什么?
提前致谢〜Aki
答案1
您可能想要更改 的值\tabcolsep
,这是一个长度变量,等于分隔列的空白宽度的一半。您可以使用命令\setlength
来更改此长度变量的值。此变量的默认值为6pt
(如果主文本的字体大小为 10pt); 的值3pt
将为您提供一组相当紧密的列。
另外,您可能还需要考虑完全消除列之间的垂直线。当有很多列时,垂直线往往会占用大量空间,而不会显著提高表格的可读性。
以下代码和相关图片说明了将值\tabcolsep
从 6pt 减少到 4、3 和 2pt 所产生的效果。在所有情况下,我都消除了所有垂直规则。
\documentclass{article}
\usepackage{booktabs} % for well-spaced horizontal rules
\newcommand{\quicktabular}{% this construct will be used several times
\begin{tabular}{*{10}{c}}
\toprule
A & B & C & D & E & F & G & H & I & J \\
A & B & C & D & E & F & G & H & I & J \\
\bottomrule
\end{tabular}}
\begin{document}
\begin{itemize}
\item Default value of \texttt{\textbackslash tabcolsep} (6pt)
\quicktabular
\item \texttt{\textbackslash tabcolsep} = 4pt
\setlength\tabcolsep{4pt}
\quicktabular
\item \texttt{\textbackslash tabcolsep} = 3pt
\setlength\tabcolsep{3pt}
\quicktabular
\item \texttt{\textbackslash tabcolsep} = 2pt
\setlength\tabcolsep{2pt}
\quicktabular
\end{itemize}
\end{document}
答案2
插入前使用 Ctrl-L 在表格中输入“Evil Red Text”并写入\begingroup\tabcolsep=0pt\def\arraystretch{0}
。后
表格也一样,按 CTRL-L 并写入\endgroup
。这样您的条目左右两侧就没有任何空格了
答案3
我不知道如何在 LyX 中放置代码,但以下内容应该可以满足您的要求。
\documentclass{article}
\usepackage{array}
\newlength{\mystrutht}
\newcommand{\mystrut}{\rule{0pt}{\mystrutht}\rule[-1pt]{0pt}{1pt}}
\newcolumntype{C}{>{\hbox to 1em\bgroup\mystrut\hfil}c<{\hfil\egroup}}
\newenvironment{zerotabular}
{\settoheight{\mystrutht}{A}\addtolength{\mystrutht}{1pt}%
\setlength{\tabcolsep}{0pt}%
\renewcommand{\arraystretch}{0}%
\begin{tabular}}
{\end{tabular}}
\begin{document}
\begin{zerotabular}{|C|C|C|C|}
\hline
A&A&C&G\\
\hline
C&A&A&C\\
\hline
A&C&A&A\\
\hline
\end{zerotabular}
\end{document}
第一部分(\documentclass
和\begin{document}
行之间)应该放在前导代码中。
每个单元格都排版在一个与大写字母 M 一样宽的框中;行间间距被抑制并由比大写字母高 1pt 且深 1pt 的手工制作的支柱代替。