注意:类似问题文章文档中的 beamer 列环境,但答案(直接使用 minipage)不适合我的用例。
基本上,我通过 pandoc(具体来说是 quarto)从 markdown 生成 LaTeX,我想使用列布局将文本和图形并排放置(不一定是等宽)。标准答案是使用 minipages,
\begin{minipage}[t]{.6\textwidth}
\vspace{0pt}
Lorem ipsum dolor sit amet consectetur adipiscing elit morbi, vivamus erat himenaeos litora cras magnis blandit leo, etiam turpis lectus nullam feugiat porttitor dis. Non ultricies mus turpis in habitant auctor euismod duis scelerisque porttitor, mattis metus nisl risus leo curabitur laoreet eget varius. Etiam sed tortor nulla quis vehicula sodales non convallis aliquam phasellus, ut facilisis sociis molestie vel sagittis eu luctus.
\begin{enumerate}
\item firstly
\item secondly
\item thirdly
\item quarto
\end{enumerate}
\end{minipage}
\hfill
\begin{minipage}[t]{.3\textwidth}
\vspace{0pt}
\includegraphics{dummy.png}
this is a picture
\end{minipage}
并且它工作正常,但是在 minipage 环境中不能使用 markdown,因为 pandoc 将其检测为原始乳胶并将其传递给输出而不处理里面的内容。
更好的是使用像 Beamer\columns{}
环境提供的语法糖,它可以在 pandoc (/quarto) 中直接映射为:
:::: {.columns}
::: {.column width="60%"}
Lorem ipsum dolor sit amet consectetur adipiscing elit morbi, vivamus erat himenaeos litora cras magnis blandit leo, etiam turpis lectus nullam feugiat porttitor dis. Non ultricies mus turpis in habitant auctor euismod duis scelerisque porttitor, mattis metus nisl risus leo curabitur laoreet eget varius. Etiam sed tortor nulla quis vehicula sodales non convallis aliquam phasellus, ut facilisis sociis molestie vel sagittis eu luctus.
1. firstly
1. secondly
1. thirdly
1. quarto
:::
::: {.column width="10%"}
:::
::: {.column width="30%"}
![](dummy.png)
:::
::::
另外一个好处是,同样的语法也适用于其他输出(beamer,还有 HTML、Word 等等)。
不幸的是,我无法理解,更不用说提取了,Beamer中相关的宏定义。它看起来充满了特定于投影仪的变量,我不知道如何开始提取它,以便在其他 LaTeX 类中使用。
另一个包中是否有更独立的类似列的环境?或者有人可以告诉我如何编写一个(例如针对文章类)?定义新环境有点超出我的基本能力。
答案1
要回答你的问题的 TeX 方面:
您可以在其他类中使用类似 beamer 的列环境,如下所示:
\documentclass{article}
\usepackage{graphicx}
\usepackage{beamerarticle}
\makeatletter
\mode<article>{\renewenvironment<>{beamer@columnenv}[2][]{ \begin{minipage}[t]{#2}\vspace{0pt}}{\end{minipage}}
\let\endcolumn\endbeamer@columnenv}
\makeatother
\begin{document}
\begin{columns}
\begin{column}{.6\textwidth}
Lorem ipsum dolor sit amet consectetur adipiscing elit morbi, vivamus erat himenaeos litora cras magnis blandit leo, etiam turpis lectus nullam feugiat porttitor dis. Non ultricies mus turpis in habitant auctor euismod duis scelerisque porttitor, mattis metus nisl risus leo curabitur laoreet eget varius. Etiam sed tortor nulla quis vehicula sodales non convallis aliquam phasellus, ut facilisis sociis molestie vel sagittis eu luctus.
\begin{enumerate}
\item firstly
\item secondly
\item thirdly
\item quarto
\end{enumerate}
\end{column}%
\begin{column}{.4\textwidth}
\includegraphics[width=\textwidth]{example-image-duck}
this is a picture
\end{column}%
\end{columns}
\end{document}