在 Beamer 中,我想要一个包含两列文本的框架,其中包含平行的内容,如下所示:
1 This is the first item in english 1 Este el primer item en español
2 Second english item 2 Segundo item en español, pero
este es mas largo
3 Third very long item in 3 Tercer item en español
English spanning
spanning spanning
many lines
4 ... 4 ...
这样,两个文本列中的对应部分应该在同一行上对齐。最好的解决方案不是特定于 beamer 的,因为这应该是一个普遍的问题。
答案1
这是通过以下方式获得的:
\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\begin{document}
\begin{frame}[t]
\begin{tabularx}{\hsize}{rXrX}
1 & This is the first item in english
& 1 & Este el primer item en español \\
2 & Second english item
& 2 & Segundo item en español, pero este es mas largo \\
3 & Third very long item in English spanning spanning spanning many lines
& 3 & Tercer item en español \\
4 & \dots
& 4 & \dots \end{tabularx}
\end{frame}
\end{document}
如果您不喜欢第一行和第三行有数字,只需删除这些列即可。您也可以通过定义新的列类型来更改单元格对齐R
:
\newcolumntype{R}{>{\RaggedRight\arraybackslash}X}
它将智能地将单元格内容左对齐。为此,\RaggedRight
您需要ragged2e
在文档的序言中添加此包。您可以在表格中获得更多位置,如果在开始和结束参数中添加@{}
如下内容:
{@{}rRrR@{}}
升级: 仔细考虑单元格的编号:由于同一行中的单元格编号相同,因此只需对行编号一次就足够了,例如仅在第一列中编号。此编号可以自动执行,这样可以节省您输入此表格时的注意力。
另外,使用包还booktabs
可以通过在addlinespace
每行后添加来增加行之间的空间(例如,也可以通过增加此空间来增加\\[1ex]
)。
通过这些“改进”,英语/西班牙语表达列表如下所示:
如您所见,自动编号还允许引用行。也许这会变得很方便。下面是描述更改后的代码:
\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{ragged2e}
\usepackage{booktabs}% <-- new
\usepackage{tabularx}
\newcolumntype{R}{>{\RaggedRight\arraybackslash}X}
%%% new
\setlength{\tabcolsep}{3pt}
\newcounter{tabrowref}
\renewcommand\thetabrowref{\arabic{tabrowref}}
\newcommand{\getTabRowRef}{%
\refstepcounter{tabrowref}
\thetabrowref}
\begin{document}
\begin{frame}[t]
\begin{tabularx}{\hsize}{@{}>{%
\color{black}%<-- for correct aligning of text in cells
\getTabRowRef%<-- for automatic numbering of rows
\setlength\hsize{0.05\hsize}}R%<-- for correct aligning of text in cells
>{\color{blue}}R %<-- colored text blue for English
>{\color{orange}}R% and orange for English
>{\color{blue}}R %<-- colored text blue for English
>{\color{orange}}R% and orange for English
@{}}
& This is the first item in English
& Este el primer item en Español
\\ \addlinespace%<-- for increasing space between rows
& Second english item
& Segundo item en Español, pero este es mas largo
\\ \addlinespace
\label{row:3}
& Third very long item in English spanning spanning spanning many lines
& Tercer item en Español \dots
\\ \addlinespace
& \dots
& \dots
\end{tabularx}
\vskip 4em
\textcolor{blue}{Automatic numbering of rows also enable to referencing a particular row. For example, considering row \ref{row:3} \dots}
\end{frame}
\end{document}
答案2
这应该是自动的:
\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tabularx,lmodern}
\newcounter{mycounter}
\setcounter{mycounter}{0}
\newcommand{\mycounter}{\stepcounter{mycounter}\arabic{mycounter}}
\newcommand{\LRenums}[2]{%
\begin{enumerate}
\item[\mycounter] #1
\end{enumerate}
&
\addtocounter{mycounter}{-1}
\begin{enumerate}
\item[\mycounter] #2
\end{enumerate}
}
\begin{document}
\begin{frame}[t]
\begin{tabularx}{\hsize}{@{}XX@{}}
\LRenums{This is the first item in english}{Este el primer item en español} \\
\LRenums{Second english item}{Segundo item en español, pero este es mas largo} \\
\LRenums{Third very long item in English spanning spanning spanning many lines}{Tercer item en español} \\
\LRenums{\dots}{\dots} \\
\end{tabularx}
\end{frame}
\end{document}