我想创建一个包含多列图片的表格。不幸的是,我不知道该怎么做。我尝试插入右侧有图片、左侧有文本的表格。但有些东西不起作用。为了清楚起见,我用 MS Word 做了一个测试。哪里错了?谢谢。
\documentclass[a4paper,10pt]{report}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{lipsum}
\usepackage[margin=1cm]{geometry}
\begin{document}
\setlength\columnsep{1cm}
\begin{multicols}{2}
\lipsum[1-3]
\begin{tabular}{l r}
\includegraphics[width=3cm]{figure.pdf}
&
\lipsum[1-3]
\end{tabular}
\end{multicols}
\end{document}
答案1
正如 Torbjørn T. 指出的,l
列定义的c
和r
选项tabular
将单元格内容视为一行。如果要定义,应使用paragraphs
选项。它会创建顶部对齐的段落。如果您加载垂直居中段落和底部对齐段落的包,则可以使用。p{par width}
array
m{par width}
b{par width}
\documentclass[a4paper,10pt]{report}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{lipsum}
\usepackage[margin=1cm]{geometry}
\usepackage{array}
\begin{document}
\setlength\columnsep{1cm}
\begin{multicols}{2}
\lipsum[1-3]
\begin{tabular}{m{3.5cm}m{.5\columnwidth}}
\includegraphics[width=3cm]{example-image.pdf}
&
\lipsum[2]
\end{tabular}
\end{multicols}
\end{document}
答案2
这个问题被问过很多次了...问题出在最后一列的类型上,r
(正如评论中所假设的那样)假设内容将在一行中,并且它会根据行宽进行调整。您需要更改r
为p{<width>}
或(最好}更改为m{<width>}
:
\documentclass[a4paper,10pt]{report}
\usepackage[margin=1cm]{geometry}
\setlength\columnsep{1cm}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{lipsum}
\usepackage{calc}
\usepackage{array}
\begin{document}
\begin{multicols}{2}
\lipsum[1-3]
\noindent
\begin{tabular}{@{}m{0.4\linewidth-2\tabcolsep-2\arrayrulewidth}
m{0.6\linewidth}@{}}
\includegraphics[width=\hsize]{example-image-a}
&
\lipsum[2]
\end{tabular}
\noindent
\begin{tabular}{@{}m{0.6\linewidth}
m{0.4\linewidth-2\tabcolsep-2\arrayrulewidth}@{}}
\lipsum[2]
&
\includegraphics[width=\hsize,height=17\baselineskip]{example-image-b}
\end{tabular}
\end{multicols}
\end{document}
为了确定柱的类型和宽度,我使用包array
(用于m
)和calc
(用于计算)。
这使:
编辑:为了利用列的整个宽度,我\noindent
在表格前添加并-2\tabcolsep-2\arrayrulewidth
从第二列宽度的确定中删除。
编辑:更改带有文本和图像的列的顺序很简单,在第一个表格列中放置文本,在第二个表格列中放置图像。要使图像适合表格单元格高度,您需要将选项添加height
到\includegraphics
。但请注意:这会破坏图像的原始纵横比。为了显示这一点,我用新的 MWE 替换了现有的 MWE,它显示了这一点(参见更正后的 MWE 和上图)。