我已经使用geometry
软件包设置了页边距(用于我的简历)。我已经设置了表格,但它超出了页边距。如何将操作系统两行之间有文字?请帮忙!
妇女权利委员会:
\documentclass[12pt]{article}
\usepackage[left=2.54cm,right=2.54cm,top=2.54cm,bottom=2.54cm]{geometry}
\begin{document}
\begin{center}
\begin{tabular}{ l l }
\hline
\textbf{Operating Systems} & Windows XP, Windows 7, Windows 8 \\
& Ubuntu, Debian, Fedora \\
\hline
\textbf{Programming Languages} & C, C++, Core Java, Core Python, Basic C\#\\
\hline
\textbf{Web Technologies} & HTML5, CSS3, XML, Javascript, Node.js, PHP, JSP, ASP.NET\\
\hline
\textbf{Databases} & Oracle 10g, MySQL 5 \\
\hline
\textbf{Packages} & Netbeans 8.0, Microsoft Visual Studio 2008/2010/2012, Eclipse 5\\
\hline
\textbf{Linux} & Bash Shell Scripting
\end{tabular}
\end{center}
\end{document}
答案1
这是一个选择虐待 multirow
。一般情况下不应该这么做。但对于这种情况,这是可行的。
\documentclass[12pt]{article}
\usepackage[left=2.54cm,right=2.54cm,top=2.54cm,bottom=2.54cm]{geometry}
%\usepackage[margin=1in]{geometry} %% this is short.
\usepackage{tabularx,multirow}
\begin{document}
\begin{center}
\begin{tabularx}{\textwidth}{>{\bfseries}lX}
\hline
\multirow{2}{*}{Operating Systems} & Windows XP, Windows 7, Windows 8, Ubuntu, Debian, Fedora \\
\hline
Programming Languages & C, C++, Core Java, Core Python, Basic C\# \\
\hline
\multirow{2}{*}{Web Technologies} & HTML5, CSS3, XML, Javascript, Node.js, PHP, JSP, ASP.NET \\
\hline
Databases & Oracle 10g, MySQL 5 \\
\hline
\multirow{2}{*}{Packages} & Netbeans 8.0, Microsoft Visual Studio 2008/2010/2012, Eclipse 5 \\
\hline
Linux & Bash Shell Scripting
\end{tabularx}
\end{center}
\end{document}
这是另一个没有滥用任何东西的版本。
\documentclass[12pt]{article}
\usepackage[left=2.54cm,right=2.54cm,top=2.54cm,bottom=2.54cm]{geometry}
%\usepackage[margin=1in]{geometry} %% this is short.
\usepackage{array,calc}
\newlength{\mylen}
\setlength{\mylen}{\widthof{\textbf{Programming Languages}}}
\newcolumntype{L}{p{\dimexpr\textwidth-\mylen-4\tabcolsep\relax}}
\newcommand{\col}[1]{% %% code stolen from egreg
\begin{tabular}{@{}>{\raggedright}L@{}}
\strut #1\strut
\end{tabular}%
}
\begin{document}
\begin{center}
\begin{tabular}{>{\bfseries}ll}
\hline
Operating Systems & \col{Windows XP, Windows 7, Windows 8, Ubuntu, Debian, Fedora} \\
\hline
Programming Languages & \col{C, C++, Core Java, Core Python, Basic C\#} \\
\hline
Web Technologies & \col{HTML5, CSS3, XML, Javascript, Node.js, PHP, JSP, ASP.NET} \\
\hline
Databases & \col{Oracle 10g, MySQL 5} \\
\hline
Packages & \col{Netbeans 8.0, Microsoft Visual Studio 2008/2010/2012, Eclipse 5} \\
\hline
Linux & \col{Bash Shell Scripting}
\end{tabular}
\end{center}
\end{document}
但是,你最好使用列表而不是tabular
。
答案2
要强制表格环境精确占据文本块的宽度而无需手动执行任何计算,可以方便地加载包tabularx
并将环境的整体宽度指定tabularx
为\textwidth
。该包还提供了一种名为的新列类型X
,其宽度计算为残差(\textwidth
减去所有其他列的宽度);这就是消除显式计算列宽的原因。此外,定义修改后的列类型很简单,X
以右对齐模式而不是完全对齐模式排版其内容。
另外,由于第一列中所有单元格的内容都以粗体显示,因此将其写为第一列的列说明>{\bfseries}l
符会更方便l
。这样,您就不必\textbf
在第一列的每个单元格中明确地写。
(@HarishKumar 在这两个解决方案的第一个中也使用了这两个建议。)
此外,您可能还需要考虑使用booktabs
包的规则绘制宏——具体来说,\toprule
和\bottomrule
——并完全删除所有其他水平线。不要使用中间水平规则(这主要造成视觉混乱),而要考虑简单地添加一些额外的垂直空白。
顺便说一句,你会注意到我会不是调整第一列中字符串“操作系统”、“Web 技术”和“软件包”的垂直位置。我认为默认放置的位置看起来不错。
\documentclass[12pt]{article}
\usepackage[margin=1in]{geometry}
\usepackage{tabularx,booktabs}
\newcolumntype{Y}{>{\raggedright\arraybackslash}X}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{@{} >{\bfseries}l Y @{}}
\toprule
Operating Systems & Windows XP, Windows 7, Windows 8, Ubuntu, Debian, Fedora \\ \addlinespace
Programming Languages & C, C++, Core Java, Core Python, Basic C\#\\ \addlinespace
Web Technologies & HTML5, CSS3, XML, Javascript, Node.js, PHP, JSP, ASP.NET\\ \addlinespace
Databases & Oracle 10g, MySQL 5 \\ \addlinespace
Packages & Netbeans 8.0, Microsoft Visual Studio 2008/2010/2012, Eclipse 5\\ \addlinespace
Linux & Bash Shell Scripting\\
\bottomrule
\end{tabularx}
\end{document}