如何将 multicol 与默认 pandoc latex 模板一起使用?

如何将 multicol 与默认 pandoc latex 模板一起使用?

Pandoc 的默认 latex 输出非常适合我的用例,但我希望正文分为两列。我尝试编辑使用 生成的默认模板pandoc -D latex,将前言更新为:

...
\usepackage{pgfpages, multicol}
\setbeamertemplate{caption}[numbered]
\setbeamertemplate{caption label separator}{: }
...

并将主要部分改为:

...
$if(has-frontmatter)$
\mainmatter
$endif$
\begin{multicols}{2}
$body$
\end{multicols}
...

但这让我出现以下错误:

Error producing PDF.
! LaTeX Error: Environment multicols undefined.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.79 \begin{multicols}

我尝试使用以下命令验证环境名称:

\documentclass[a4paper]{article}
\usepackage{multicol,lipsum}

\begin{document}
\begin{multicols}{2}
\lipsum
\end{multicols}
\end{document}

并且运行正常,但我对 Latex 或 Pandoc 不够熟悉,因此无法真正了解为什么muilticols编辑 pandoc 模板时环境未定义。有人知道这是怎么回事吗?

答案1

您不需要multicol两列文档,最好使用twocolumn不会出现浮点问题的选项。

不幸的是,markdown 表被导出为长表,而不是浮点数,更糟糕的是,正如您所发现的,它们不能在多列或双列选项中使用。

但是,如果没有过滤器或扩展,使用 Quarto markdown(使用扩展保存 MWE .qmd),您可以使用这些解决方法,每个解决方法都有其缺点:

姆韦

---
format: pdf
keep-tex: true
classoption: twocolumn
include-in-header: 
- text: \usepackage{lipsum}
---

See @tbl-foo and Table \ref{tbl-x} and @tbl-lt

# Option: Insert true LaTeX tabulars

\lipsum[1][1-3]

::: {#tbl-foo tbl-pos="h"}

```{=tex}

\begin{tabular}{|cc|}
a & b \\
\end{tabular}
```
This is the caption

:::


# Option: R/phyton generated tables

\lipsum[2][1-3]

```{r}
#| results: asis
#| echo: false
#| tbl-cap: This is a xtable

df <- data.frame(Foo=c(1,2,3),Bar=c("foo","bar","baz"))
library(xtable)
print(xtable(df, label="tbl-x"), floating=T, comment=F, table.placement = "h")

```


# Option 4: Redefine longtable

\lipsum[3][1-3]

```{=tex}

% of course, better in the preamble

\makeatletter
\let\oldlt\longtable
\let\endoldlt\endlongtable
\def\longtable{\@ifnextchar[\longtable@i \longtable@ii}
\def\longtable@i[#1]{\begin{table}[h]
\onecolumn
\begin{minipage}{.5\textwidth}
\oldlt[#1]
}
\def\longtable@ii{\begin{table}
\onecolumn

\begin{minipage}{.5\textwidth}
\oldlt
}
\def\endlongtable{\endoldlt
\end{minipage}
\twocolumn
\end{table}
}
\makeatother
```

| Col1 | Col2 | Col3 |
|------|------|------|
| foo  | bar  | baz  |
| tic  | tac  | toe  |

: This is the caption {#tbl-lt}

\lipsum[4-7]

相关内容