Pandoc PDF 参考书目列表部分双列布局方法

Pandoc PDF 参考书目列表部分双列布局方法

我正在寻找一种方法来将文档格式化为两列,包括正文和末尾的参考书目参考列表。我当前的工作流程正确地使用了正文中的 markdown 列,但参考书目列表始终格式化为单列。文档来源是 markdown,参考书目使用 pandoc 命令行上的“citeproc”选项,从外部 bibtex 文件中提取。

以下是 Windows cmd 文件中的 pandoc 命令行选项:

`pandoc ^
 -f markdown bib-2cols.md ^
 --citeproc -M reference-section-title=References ^
 --bibliography refs.bib ^
 --lua-filter=filters/columns.lua ^
 -o bib-2cols.pdf`

然而,这种方案导致参考书目始终具有单列格式: 屏幕截图-pdf-输出-参考书目-单列

工具链基于https://github.com/dialoa/columnsv1.1.3,pandoc 3.1.2,在 Windows 10 上。

也许解决方案是使用一些 citeproc 替代书目处理方法?也许在 markdown 中添加一些内联 TeX 魔法?也许使用 pandoc 生成 TeX 输出而不是直接生成 PDF,然后使用 TeX 后处理方法?

我很想知道是否有人找到了创建双列参考布局的方法。

相关问题:https://stackoverflow.com/questions/71780314/pandoc-md-to-docx-sections-with-different-number-of-columns

附件:markdown源码:

---
title: Bibliography Two Column Test

# Formatting:
geometry: "a4paper, left=2.0cm, right=2.0cm, top=1.9cm, bottom=2.54cm"

---
<!--- (start of two-column formatting) --->
::: columns

# Body{.unnumbered}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
 tempor incididunt ut labore et dolore magna aliqua.
 Consequat interdum varius sit amet mattis vulputate.
 Tincidunt id aliquet risus feugiat. Maecenas sed enim ut sem. 
 
In nibh mauris cursus mattis molestie a. Dictum fusce ut placerat orci nulla pellentesque.
 Tempus quam pellentesque nec nam. Sed elementum tempus egestas sed sed risus.
 Ipsum dolor sit amet consectetur adipiscing elit duis tristique sollicitudin.
 Interdum velit laoreet id donec ultrices tincidunt arcu non sodales.

## Place-Holder Citations to force inclusion until used within body:
### Papers

  [@jianming2017;
   @piponi2000;
   @armi2019;
   @walshaw1995;
   @xu2011;
   @wei2004;
   @vanwaveren2006;
   @maggiordomo2021;
   @maggiordomo2020;
   @zhang2020;
   @czachurski2022;
   @gal2010;
   @norynchak2021]

:::
<!--- closing columns --->
<!--- References Added below by citeproc --->

答案1

显而易见的解决方案是将所需信息添加到yaml文件的头部.md。只需在文件顶部添加以下几行即可降价文件:

---
classoption:
- twocolumn
---

如果您使用它来处理文档,pandoc则会生成完整的双列文档,其中包括参考书目在内的每一页都格式化为两列。

我用pandoc -s -C --csl=apa.csl test.md -o test.pdf

使用如下文档...

---
classoption:
- twocolumn
author: Petra Digging
bibliography: [mybib.bib]
---

# A First Heading

Here ist some research text. Right now, its not very long, so go out and do some more research. Some more text to come. @doe_2022 @dane_2020

And, finally, a new paragraph.

* A list
* Second items

\clearpage

:::refs
:::

...看起来像这样:

在此处输入图片描述

答案2

这是答案的进一步变体,允许使用 Markdown 和 Pandoc 对文档正文中的部分以及参考书目进行列控制。这避免了意外的分页符。与其使用 classoption 为整个文档设置两列,不如将其设置为单列默认值,然后使用 LUA 过滤器明确控制列。

该方法使用两个都YAMLclassoption: - onecolumnLUA 过滤器

技术细节:

  1. 在 pandoc YAML 标头中包含以下内容:

    ---
    classoption:
        - onecolumn
    ---
    
  2. columns.luapandoc命令行上的参考:

    --lua-filter=filters/columns.lua
    
  3. 在文档主体内容周围使用列控件:

    ::: columns
    Two-column content here...
    :::
    One-column content here...
    
    
  4. 在 markdown 的最后一行,添加参考书目模式:

    \twocolumn
    

以下是重新设计的示例 MD:

---
title: Bibliography Two Column Test

# use Tex built-in column control, covering bibliography, set to single column
classoption:
    - onecolumn

bibliography: [refs.bib]

# Formatting:
geometry: "a4paper, left=2.0cm, right=2.0cm, top=1.9cm, bottom=2.54cm"
---
<!--- (start of two-column formatting, using LUA filter  https://github.com/dialoa/columns, only within body) --->
::: columns

# Body
Two-column content here: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
 tempor incididunt ut labore et dolore magna aliqua.
 Consequat interdum varius sit amet mattis vulputate.
 Tincidunt id aliquet risus feugiat. Maecenas sed enim ut sem. 
 
:::

# More
Reverting to single column here: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
 tempor incididunt ut labore et dolore magna aliqua.
 Consequat interdum varius sit amet mattis vulputate.
 Tincidunt id aliquet risus feugiat. Maecenas sed enim ut sem. 

::: columns
# Papers
Reverting to two columns again.
  [@jianming2017;
   @piponi2000;
   @armi2019;
   @walshaw1995;
   @xu2011;
   @wei2004;
   @vanwaveren2006;
   @maggiordomo2021;
   @maggiordomo2020;
   @zhang2020;
   @czachurski2022;
   @gal2010;
   @norynchak2021]

:::
\clearpage
<!--- send bibliography into two-column --->
\twocolumn

它看起来是这样的: bib-2col-B

相关内容