写excel到latex的脚本转换工具时,为了在latex中实现几乎和excel一致的样式,我把目前常用的绘制表格的包浏览了一遍,但是碰到了一些问题。下面说一下我的成功的一些做法和尚未解决的问题,对于已解决的问题如果大家有更好的替换方案,也可以分享一下我去尝试。 ### 任意线宽,任意颜色的cline #### 设置cline线宽 - `boldline`中的`\clineB{1-2}[2]` - `booktabs`中的`\cmidrule[1pt]{1-2}` - `\arrayrulewidth`得在表格外设置,尝试在表格内设置,无效,故放弃 - `\hrule`和`\rule`不知道怎么在表格中绘制cline,但想想应该是很麻烦的事情,就没有考虑 #### 设置颜色 `colortbl`中的`\arrayrulecolor`命令,我定义了一个宏来使用它 ```tex \newcommand\colorwrap[2]{ \arrayrulecolor{#1}#2 \arrayrulecolor{black} } ``` `boldline`与`colortbl`并不兼容,`arrayrulecolor`命令对其无效,故放弃使用这个包。 现在只剩下了`booktabs`包,我对excel中扫描到的所有属性一致的cline统一使用`\cmidrule`来绘制横线,这时出现了顶端横线与两旁的竖线有空隙的问题,如下图 ![](https://pics.latexstudio.net/data/images/202004/6696d0d1b0ae852.png) 查阅资料后我做出了如下设置 ```tex \setlength\abovetopsep{0pt} \setlength\belowbottomsep{0pt} \setlength\aboverulesep{0pt} \setlength\belowrulesep{0pt} ``` 但是还是有微小的间隙 ![](https://pics.latexstudio.net/data/images/202004/5de7da70f945bd9.png) 我猜测是`\cmidrule`本身的宽度造成了这些间隙,减去五条线的宽度后,距离正常了,但是注意到**底下这跟红线的位置不对**,就好像空白的地方本来就有了一条线一样,这个问题不知道怎么解决 完整的由脚本生成的代码如下 ```tex \documentclass{article} \usepackage{xeCJK} \usepackage{xcolor} \usepackage{colortbl} \usepackage{multirow, makecell} \usepackage{boldline} \usepackage{booktabs} \usepackage{arydshln} \begin{document} \definecolor{FFFF00}{HTML}{FFFF00} \definecolor{FF0000}{HTML}{FF0000} { \setlength\abovetopsep{0pt} \setlength\belowbottomsep{0pt} \setlength\aboverulesep{0pt} \setlength\belowrulesep{0pt} \newcommand\colorwrap[2]{ \arrayrulecolor{#1}#2 \arrayrulecolor{black} } \begin{tabular}{*{6}{|c}|} % row 1 \cmidrule[0.4pt]{1-6} \vspace{-2pt} & 2 & \textcolor{FFFF00}{sd} & 4 & & \\ \cmidrule[0.4pt]{1-4} % row 2 & 3 & \multirowcell{2}{\textbf{abc}} & & & \\ \cmidrule[0.4pt]{1-4} % row 3 \multicolumn{2}{|c|}{\textit{123}} & & & & \\ \cmidrule[0.4pt]{1-4} % row 4 & & & & & \\ \cmidrule[0.4pt]{1-4} \colorwrap{FF0000}{\cmidrule[0.4pt]{5-6}} \end{tabular} } \end{document} ``` 其实还有问题,当我在下面添加更多空单元格时,第一行的间距就变小了,解决办法是第一行代码改写一下,第7行把减去的间距补上 ```tex % row 1 \cmidrule[0.4pt]{1-6} \vspace{-2pt} & 2 & \textcolor{FFFF00}{sd} & 4 & & \\[2pt] \cmidrule[0.4pt]{1-4} ``` 目前问题就只剩下和`\arrayrulecolor`一起使用时的命令,为了更清晰的展现这个问题,我使用另外一个MWE ```tex \documentclass{article} \usepackage{xeCJK} \usepackage{xcolor} \usepackage{colortbl} \usepackage{multirow, makecell} \usepackage{boldline} \usepackage{booktabs} \usepackage{arydshln} \begin{document} \definecolor{FFFF00}{HTML}{FFFF00} \definecolor{FF0000}{HTML}{FF0000} { \setlength\abovetopsep{0pt} \setlength\belowbottomsep{0pt} \setlength\aboverulesep{0pt} \setlength\belowrulesep{0pt} \newcommand\colorwrap[2]{ \arrayrulecolor{#1}#2 \arrayrulecolor{black} } \begin{tabular}{*{2}{|c}|} % row 1 \vspace{-1.6pt} 1 & 2 \\[1.6pt] \cmidrule[0.4pt]{1-1} \colorwrap{FF0000}{\cmidrule[0.8pt]{2-2}} % row 2 3 & 4 \\ \cmidrule[0.4pt]{1-1} \colorwrap{FF0000}{\cmidrule[0.8pt]{2-2}} \end{tabular} } ``` ![](https://pics.latexstudio.net/data/images/202004/1541660b1f0b19c.png) ### 可设置线宽的虚线问题 [https://wenda.latexstudio.net/q-2057.html](https://wenda.latexstudio.net/q-2057.html) ### 绘制任意宽度任意颜色的竖线(已解决) 单个单元格例子 ```tex \muticolumn{1}{c!{\color{red} \vrule width 1pt}} ``` ### 单元格颜色(已解决) 使用`colortbl`中的`\cellcolor`命令

0 回答0

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。