我想制作一个有 3 列的表格。
表格将适合容器的宽度。
左列将右对齐,并占用尽可能少的宽度空间。
中心列将左对齐,并占用尽可能少的宽度空间。
右列将左对齐并占用尽可能多的宽度空间。
到目前为止我有这个:
% unrelated setup stuff
\documentclass[letter]{report}
\usepackage[top=2cm, bottom=2cm, left=1cm, right=1cm]{geometry}
\usepackage[sfdefault]{cabin}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usepackage{lipsum}
\newenvironment{absolutelynopagebreak}
{\par\nobreak\vfil\penalty0\vfilneg
\vtop\bgroup}
{\par\xdef\tpd{\the\prevdepth}\egroup
\prevdepth=\tpd}
\fontfamily{pcr}\selectfont
\setlength{\parindent}{0ex}
\setlength{\parskip}{1em}
% /unrelated setup stuff
\begin{document}{
\begin{tabular}{rll}
(S) 10 & \% (w/v) & 1,4-butanediol \\
\end{tabular}
}
\end{document}
但我不确定如何为这三列分配基于百分比的宽度。
理想情况下,它应该是这样的:
\begin{tabular}{r{1 percent}l{1 percent}l{99 percent}}
我想要做的事情可以用 HTML/CSS 显示:
JS 小提琴 -http://jsfiddle.net/3w61tt78/
<table>
<tr>
<td class="small r">(S) 10</td>
<td class="small l">% (w/v)</td>
<td class="large l">1,4-butanediol</td>
</tr>
</table>
<style type="text/css">
table, td
{
border:1px solid #000;
border-spacing:1px;
}
table
{
width:100%;
}
td
{
padding:2px 4px;
}
.small
{
white-space:nowrap;
width:1%;
}
.large
{
width:99%;
}
.r
{
text-align:right;
}
.l
{
text-align:left;
}
</style>
答案1
就像这样可能...
\documentclass{article}
\usepackage{array}
\usepackage{tabularx}
\usepackage{showframe}
\begin{document}
\noindent
\begin{tabular*}{\textwidth}{rl@{\extracolsep{\fill}}l} %% @{\extracolsep{\fill}} is redundant IMO
(S) 10 & \% (w/v) & 1,4-butanediol \\
\end{tabular*}
\bigskip
\noindent
\begin{tabular}{>{\raggedleft}p{0.1\textwidth}p{0.15\textwidth}
p{\dimexpr0.75\textwidth-6\tabcolsep\relax}} %% adjust width yourself
(S) 10 & \% (w/v) & 1,4-butanediol \\
\end{tabular}
\bigskip
\noindent
\begin{tabularx}{\textwidth}{rlX}
(S) 10 & \% (w/v) & 1,4-butanediol \\
\end{tabularx}
\end{document}
答案2
这是一个简化的例子:
\documentclass{article}
\usepackage{array,tabularx}
\begin{document}
\begin{tabularx}{\linewidth}{>{\hsize=.01\hsize\raggedleft\arraybackslash}X>{\hsize=.01\hsize}X>{\hsize=2.98\hsize}X}
(S) 10 & \% (w/v) & 1,4-butanediol \\
\end{tabularx}
\end{document}
这可以满足您的要求,但是看起来很糟糕:
如果前两列包含的内容相对较少,我只会使用r
和l
:
\begin{tabularx}{\linewidth}{lrX}
(S) 10 & \% (w/v) & 1,4-butanediol \\
\end{tabularx}
如果它们包含更长的文本,你可能需要更多类似的内容:
\begin{tabularx}{\linewidth}{>{\hsize=.5\hsize\raggedleft\arraybackslash}X>{\hsize=.5\hsize}X>{\hsize=2\hsize}X}
(S) 10 & \% (w/v) & 1,4-butanediol \\
\end{tabularx}