我在页面格式方面遇到了一些问题tabular
。我尝试编写包含多个内容sections
(个人数据、教育背景等)的简历,每个简历中都有tabular
两列:第一列用于日期和/或一般标题,第二列用于联系人描述。
前任:
\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{hyperref}
\usepackage{subscript}
\usepackage[absolute]{textpos}
\usepackage{xunicode,xltxtra,url,parskip}
\RequirePackage{color,graphicx}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage[big]{layaureo}
\usepackage{titlesec}
\titleformat{\section}{\Large\scshape\raggedright}{}{0em}{}[\titlerule]
\titlespacing{\section}{0pt}{1pt}{1pt}
\begin{document}
\section{Work Experience}
\begin{tabular}{r|p{0.8\textwidth}}
\underline{\emph{2018}} & Ph.D Student at the \textbf{University of Blabla}, Blabla, Earth \\\textsc{Sept 2013} & \emph{Prof. Einstein Lab - Dept. of Physics}\\ & \footnotesize{\textsf{The group of Prof. Einstein focuses on bla bla}.}} \\
\end{tabular}
\section{Skills}
\begin{tabular}{r|p{0.8\textwidth}}
\textsc{Computer Skills} & Data analysis softwares \textit{(Blablabla, Blablabla -- Blablabla, Matlab)} -- Extras \textit{(\textsc{GNU/Linux}, Blabla, blabla)}.\\\multicolumn{2}{c}{} \\
\end{tabular}
\end{document}
- 列之间的分隔符
|
根据第一列中单词的宽度放置在不同的位置。- 例如:显然单词 as
Computer Skills
比2016
- 例如:显然单词 as
- 第二列的长度取决于剩余空间
- 如果第一列的宽度不同,则第二列上的文本将不会与其他列对齐
也许根本不可能,但由于我的长度不同,我想以“自动”的方式统一我的列的尺寸(也就是说,不需要像2,5cm
在tabular
环境设置中添加个人固定参数)。
我已经尝试使用tabular*
,tabularx
以及multirow
环境,但没有成功。由于缺乏经验,我肯定错过了一些东西。
所以我总结的问题是:
我怎样才能概括列的宽度,以便使最终尺寸在不同部分保持一致?
答案1
当@Andrew Swann 发表类似想法时,我正在对一个变体进行微调。
注意我删除了xelatex
特定的软件包,因为你加载了inputenc
、fontenc
和。此外,的babel
选项毫无用处,因为它已经是默认选项好几年了。usenames
xcolor
我建议使用tabularx
,eqparbox
并collcell
定义一种新的R
列类型,将每个单元格的内容放在中eqmakebox
。此外,我建议定义一个新的彩色、更粗的垂直规则,插入列之间,如下所示v
:
\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{hyperref}
\usepackage[absolute]{textpos}
\usepackage{url,parskip}
\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage[big]{layaureo}
\usepackage{titlesec}
\usepackage{tabularx, eqparbox, collcell}
\newcommand\myeqmakebox[1]{\eqmakebox[COL][r]{\scshape#1}}
\newcolumntype{R}{>{\collectcell\myeqmakebox}r<{\endcollectcell}}
\newcolumntype{v}{!{\color{CornflowerBlue}\vrule width 3pt}}%
\titleformat{\section}{\Large\scshape\raggedright}{}{0em}{}[\titlerule]
\titlespacing{\section}{0pt}{1pt}{1pt}
\setlength\extrarowheight{3pt}
\begin{document}
\section{Work Experience}
\begin{tabularx}{\linewidth}{@{}R v X@{}}
\underline{\emph{2018}} & Ph.D Student at the \textbf{University of Blabla}, Blabla, Earth \\%
Sept 2013 & \emph{Prof. Einstein Lab - Dept. of Physics}\newline \footnotesize{\textsf{The group of Prof. Einstein focuses on bla bla}.}
\end{tabularx}
\section{Skills}
\begin{tabularx}{\linewidth}{@{}RvX@{}}
Computer Skills & Data analysis softwares \textit{(Blablabla, Blablabla -- Blablabla, Matlab)} -- Extras \textit{(\textsc{GNU/Linux}, Blabla, blabla)}.
\end{tabularx}
\end{document}
答案2
您可以eqparbox
为此使用该包。
首先加载array
然后定义一个新的列类型L
:
\newcolumntype{L}[1]{>{\begin{lrbox{\csname#1box\endcsname}}r%
<{\end{lrbox}\eqmakebox[#1][r]%
{\unhcopy\csname#1box\endcsname\strut}}}
然后,规范L{colname}
将生成列,这些列将其内容捕获到名为 的框中colnamebox
,并将它们放置在\eqmakebox
名为 的 中colname
。 的属性\eqmakebox
是,相同序列中的所有此类框将具有相同的宽度,可能在第二次运行 LaTeX 之后。您需要用colnamebox
声明\newsavebox
。
\documentclass[a4paper,12pt]{article}
\usepackage{parskip}
\usepackage[big]{layaureo}
\usepackage{titlesec}
\usepackage{eqparbox,array}
\newcolumntype{L}[1]{>{\begin{lrbox}{\csname#1box\endcsname}}r%
<{\end{lrbox}\eqmakebox[#1][r]{\unhcopy\csname#1box\endcsname\strut}}}
\newsavebox{\mylheadbox}
\newlength{\mylheadwd}
\makeatletter
\AtBeginDocument{\setlength{\mylheadwd}{%
\@ifundefined{eqp@this@mylhead}{0pt}{\eqp@this@mylhead}}}
\makeatother
\titleformat{\section}{\Large\scshape\raggedright}{}{0em}{}[\titlerule]
\titlespacing{\section}{0pt}{1pt}{1pt}
\begin{document}
\section{Work Experience}
\begin{tabular}{L{mylhead}|p{0.9\textwidth-\mylheadwd}}
\underline{\emph{2018}}
&Ph.D Student at the \textbf{University of Blabla}, Blabla, Earth \\
\textsc{Sept 2013}
&\emph{Prof.\ Einstein Lab - Dept.\ of Physics}\\
&\footnotesize\textsf{The group of Prof.\ Einstein focuses on bla bla}. \\
\end{tabular}
\section{Skills}
\begin{tabular}{L{mylhead}|p{0.9\textwidth-\mylheadwd}}
\textsc{Computer Skills}
&Data analysis softwares (\textit{Blablabla, Blablabla ---
Blablabla, Matlab}) --- Extras (\textit{\textsc{GNU/Linux}, Blabla,
blabla}).\\
\end{tabular}
\end{document}
在上面的代码中,我删除了此特定示例中所有未使用的包,并整理了表中的文本命令。请注意 (a) 如果您正在使用,hyperref
则它应该是最后加载的包,(b)\footnotesize
不带参数,(c) 缩写需要写成Prof.\
,(d) 圆括号最好放在斜体之外。
\eqmakebox[mlhead]
上述代码还展示了一种通过将给定 es 存储在 中来捕获给定 es 的大小的方法\mylheadwd
。第一次编译文档时,捕获此变量时的变量,即\eqp@this@mylhead
,未定义,因此我为此添加了一个测试。正确的值仅在文档主体的开头可用,因此代码已封装在 中\AtBeginDocument
。我已使用此机制来确定表格中第二列的宽度。Bernard 建议使用tabularx
是一种更实用的方法,但仅限于在表格中使用。
答案3
我必须删除一些软件包才能让它在我的电脑上加载和运行。顺便说一句,加载 color 和 xcolor 是多余的。
只要您使用固定长度 p{} 并右对齐表格,并且没有任何东西插入边距,列就会对齐。您真正需要做的就是计算 parboxes 的最大宽度。
由于通常只需看一眼就能知道最长的条目,因此我首先测量了它的宽度(计算机技能)。然后我计算了在\textwidth
删除表格开销后剩余的空间。(如果您想缩进表格,也请减去\parindent
)。
\documentclass[a4paper,12pt]{article}
%\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{hyperref}
%\usepackage{subscript}
\usepackage[absolute]{textpos}
%\usepackage{xunicode,xltxtra,url,parskip}
%\RequirePackage{color,graphicx}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage[big]{layaureo}
\usepackage{titlesec}
\usepackage{showframe}% debugging tool
\titleformat{\section}{\Large\scshape\raggedright}{}{0em}{}[\titlerule]
\titlespacing{\section}{0pt}{1pt}{1pt}
\newlength{\maxwidth}
\begin{document}
\settowidth{\maxwidth}{\textsc{Computer Skills}}%
\setlength{\maxwidth}{\dimexpr \textwidth-\maxwidth-4\tabcolsep-\arrayrulewidth}%
\section{Work Experience}
\noindent\raggedleft
\begin{tabular}{r|p{\maxwidth}}
\underline{\emph{2018}} & Ph.D Student at the \textbf{University of Blabla}, Blabla, Earth \\\textsc{Sept 2013} & \emph{Prof. Einstein Lab - Dept. of Physics}\\ & \footnotesize{\textsf{The group of Prof. Einstein focuses on bla bla}.} \\
\end{tabular}
\section{Skills}
\noindent\raggedleft
\begin{tabular}{r|p{\maxwidth}}
\textsc{Computer Skills} & Data analysis softwares \textit{(Blablabla, Blablabla -- Blablabla, Matlab)} -- Extras \textit{(\textsc{GNU/Linux}, Blabla, blabla)}.\\ \multicolumn{2}{c}{} \\
\end{tabular}
\end{document}