![Tabular(x) 单元格填充了来自宏的文本](https://linux22.com/image/273792/Tabular(x)%20%E5%8D%95%E5%85%83%E6%A0%BC%E5%A1%AB%E5%85%85%E4%BA%86%E6%9D%A5%E8%87%AA%E5%AE%8F%E7%9A%84%E6%96%87%E6%9C%AC.png)
我正在尝试生成一个包含一些静态文本和一些应从定义的宏提供的文本的表。考虑以下 MWE:
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[norsk]{babel}
\usepackage{fouriernc, graphicx, booktabs, multirow, tabularx}
\usepackage[showframe,width=0.85\paperwidth]{geometry}
\newcommand{\lsubject}{Naturfag}
\newcommand{\ldate}{20.08.13}
\newcommand{\lclass}{9D}
\newcommand{\lduration}{90 min.}
\newcommand{\lstart}{0815}
\newcommand{\lend}{0945}
\newcommand{\lcompetence}{Gjøre greie for hvilke biotiske og abiotiske faktorer som inngår i et økosystem og forklare sammenhengen mellom faktorene.}
\begin{document}
\noindent
\begin{tabularx}{1\textwidth}{*{4}{X}}
\toprule
Dato: \ldate & Klasse: \lclass & Varighet: \lduration & Tidspunkt: \lstart--\lend \\
Fag: \lsubject & \multicolumn{3}{l}{Kompetansemål (K06): \lcompetence} \\
\bottomrule
\end{tabularx}
\end{document}
随着
目的是让 中的文本\lcompetence
填满页面的 3/4(这样第一行中的列均匀分布在文本宽度上,因此multicolumn
环境位于第二行),但它不能正确换行。它反而会将其他列挤在一起。我尝试将 包裹\lcompetence
在 中parbox
,但结果导致左下角单元格Fag: Naturfag
(不是英文 :p)相对于单元格高度居中,而不是位于单元格顶部。
我已经尝试了一些针对tabular
和tabularx
环境的解决方案,因此有了问题标题。
有没有一种优雅的方法来解决这个问题,让\lcompetence
内容很好地填充文本宽度的 3/4?感觉这个问题以前可以回答,但我找不到答案。
答案1
您必须教会tabularx
使用正确的水平尺寸。
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[norsk]{babel}
\usepackage{fouriernc, graphicx, booktabs,tabularx}
\usepackage[showframe,width=0.85\paperwidth]{geometry}
\newcommand{\lsubject}{Naturfag}
\newcommand{\ldate}{20.08.13}
\newcommand{\lclass}{9D}
\newcommand{\lduration}{90 min.}
\newcommand{\lstart}{0815}
\newcommand{\lend}{0945}
\newcommand{\lcompetence}{Gjøre greie for hvilke biotiske og abiotiske faktorer som inngår
i et økosystem og forklare sammenhengen mellom faktorene.}
\begin{document}
\noindent
\begin{tabularx}{1\textwidth}{*{4}{X}}
\toprule
Dato: \ldate & Klasse: \lclass & Varighet: \lduration & Tidspunkt: \lstart--\lend \\
Fag: \lsubject &
\multicolumn{3}{>{\hsize=\dimexpr 3\hsize+4\tabcolsep\relax}X}
{Kompetansemål (K06): \lcompetence} \\
\bottomrule
\end{tabularx}
\end{document}
tabularx
但此应用程序无需使用:
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[norsk]{babel}
\usepackage{fouriernc, graphicx, booktabs,tabularx}
\usepackage[showframe,width=0.85\paperwidth]{geometry}
\newcommand{\lsubject}{Naturfag}
\newcommand{\ldate}{20.08.13}
\newcommand{\lclass}{9D}
\newcommand{\lduration}{90 min.}
\newcommand{\lstart}{0815}
\newcommand{\lend}{0945}
\newcommand{\lcompetence}{Gjøre greie for hvilke biotiske og abiotiske faktorer som inngår
i et økosystem og forklare sammenhengen mellom faktorene.}
\begin{document}
\noindent
\begin{tabular}{*{4}{p{\dimexpr.25\textwidth-2\tabcolsep}}}
\toprule
Dato: \ldate & Klasse: \lclass & Varighet: \lduration & Tidspunkt: \lstart--\lend \\
Fag: \lsubject &
\multicolumn{3}{p{\dimexpr .75\textwidth-2\tabcolsep\relax}}
{Kompetansemål (K06): \lcompetence} \\
\bottomrule
\end{tabular}
\end{document}
答案2
使用\multicolumn{3}{p{.75\linewidth}}{Kompetansemål (K06): \lcompetence}
(因为您正好使用了 4X
列)。eft l
-alignment 不允许换行。