绘制边框不对齐的表格

2020-06-17 16:03发布

## 编译环境 操作系统 * [ ] Windows 7/8/10 * [x ] macOS * [ ] Linux `若需勾选,请把[ ]改成[x]` Tex发行版 * [ ] TexLive `...

## 编译环境 操作系统 * [ ] Windows 7/8/10 * [x ] macOS * [ ] Linux `若需勾选,请把[ ]改成[x]` Tex发行版 * [ ] TexLive `年份` * [ ] MikTeX `版本号` * [ ] CTeX `若需勾选,请把[ ]改成[x]` ## 我的问题 ### 内容 我想用tex写制作一个表格。这个表格不是所有边框都对齐,显然看上去这个表分成三个部分。每个部分边框是对齐的。这样的表怎么制作? ### 动机 经常要填写这类表格,而且是大量的重复信息,什么学号、姓名。有时候还会填错。太烦了。如果可以用tex,那么就可以用程序自动生成了。 ![](https://wenda.latexstudio.net/data/attach/200617/tdXcR9VI.jpg)
3条回答
这里给你提供一个简短的示例,剩下的你照着自己填充就行,不过我还是建议你用excel,word啥的吧,应该有模板功能的。不同的列宽你把它分成两个表格就行了。 ```tex \documentclass{ctexart} \usepackage{tabularx} \usepackage{xcolor} \usepackage{xparse} \newcolumntype{Y}{>{\centering\arraybackslash}X} \newcolumntype{s}{m{.15\linewidth}} \makeatletter \def\t@c{\centering\arraybackslash} % 表格 \def\maketable{ \centering \ifx\t@caption\@empty\else{\bfseries\t@caption} \vskip 1em\fi \noindent\begin{tabularx}{\linewidth}{|s|Y|s|Y|} \hline \t@c 学\hspace{2\ccwd}号 & \t@id & \t@c 专业班级 & \t@class \\ \hline \t@c 题\hspace{2\ccwd}目 & \t@title \\ \hline \end{tabularx} \vskip -1.4pt \noindent\begin{tabularx}{\linewidth}{|m{.3\linewidth}|Y|} \t@testa & \t@testb \\ \hline \end{tabularx} } % 样式 \def\t@style{\ifx\t@color\@empty\else\leavevmode\color{\t@color}\fi\t@font} % 颜色 \def\tcolor#1{\def\t@color{#1}} \let\t@color\@empty % 字体 \def\tfont#1{\def\t@font{#1}} \let\t@font\@empty % 标题 \def\tcaption#1{\def\t@caption{#1}} \def\t@caption{XX学院毕业设计(论文)总评表} % 定义新的单个单元格 \NewDocumentCommand {\newtcell} {O{1} m O{\@empty} } { \expandafter\newcommand\csname t#2\endcsname[2][c]{% \@namedef{t@#2}{ \ifnum#1=1 \t@align{##1}\t@style##2 \else\ifnum#1>1 \multicolumn{#1}{##1|}{\t@style##2} \else\fi\fi } } \@nameuse{t#2}{#3} } % 对齐处理 \def\t@align#1{ \ifx#1c\centering\else \ifx#1l\raggedright\else \ifx#1r\raggedleft\else \fi\fi\fi\arraybackslash } \makeatother \newtcell{id} \newtcell{class} \newtcell[3]{title} \newtcell{testa} \newtcell{testb}[测试2:默认值] \tcolor{red} \tfont{\itshape} \tid{12345} \tclass{二班} \ttitle[l]{这是一个题目} \ttesta[r]{测试1} \begin{document} \maketable \end{document} ``` ![](https://wenda.latexstudio.net/data/attach/200617/tPiyB6WK.png)

一周热门 更多>