Latex 从markdown第四个标题生成pdf的Pandoc呈现方式不同
我正在使用pandoc从一些降价生成pdf。我通过散列符号使用h1到h4。示例h1=#,h4=#####。当我生成这样的文档时:Latex 从markdown第四个标题生成pdf的Pandoc呈现方式不同,latex,markdown,pandoc,pdflatex,Latex,Markdown,Pandoc,Pdflatex,我正在使用pandoc从一些降价生成pdf。我通过散列符号使用h1到h4。示例h1=#,h4=#####。当我生成这样的文档时: pandoc input.md -o output.pdf 我得到一个文档,其中h1、h2和h3后面有一个新行,但h4没有新行。文本与标题在同一行开始(格式不同,但中间没有换行符) 我尝试在#######之后添加空格,并使用编辑器添加手动换行符,但似乎没有任何效果 有什么想法吗?pandoc通过LaTeX生成PDF。在LaTeX中,使用以下命令生成“标题”: \se
pandoc input.md -o output.pdf
我得到一个文档,其中h1、h2和h3后面有一个新行,但h4没有新行。文本与标题在同一行开始(格式不同,但中间没有换行符)
我尝试在#######之后添加空格,并使用编辑器添加手动换行符,但似乎没有任何效果
有什么想法吗?
pandoc
通过LaTeX生成PDF。在LaTeX中,使用以下命令生成“标题”:
\section
\subsection
\subsubsection
\段落
\子段
\paragration
命令,如您所述呈现。根本没有要使用的\subsubsubsection
命令
获得所需内容的唯一方法是重新定义
\paragration
命令,这相当棘手。我无法使它与Pandoc一起工作。我不确定,为什么,但这对我来说是可行的:
将$\\$
放在你的\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
可以说,解决这一问题的最佳方法是通过改变4级标题对应的内容来完全避免问题。pandoc的默认设置是对第一级标题使用\section
命令,对第四级标题使用\paration
。这可以通过以下参数进行更改:
——顶层划分=[默认|部分|章节|部分]
在LaTeX[…]输出中将顶级标题视为给定的分区类型。层次顺序为部分、章节、章节;所有标头都会移动,以便顶级标头成为指定的类型。默认行为是通过试探法确定最佳分割类型[…]
因此,使用--top-level division=chapter
,将通过\subsubsection
命令生成第四级标题
乳胶造型
如果这不是一个选项,下一个最好的方法是配置相应LaTeX命令的布局:对于四级标题,默认情况下为\paragration
。以下方法取自
请检查bpj的答案,该答案比下面的建议简单得多
默认文档类
默认方式是通过titlesec包配置\paragration
。我们可以为此使用header includes元数据字段,pandoc将在中间LaTeX文档中包含该字段
---
标题包括:|
```{=乳胶}
\usepackage{titlesec}
\标题间距*{\段落}{0pt}{1ex}{-\parskip}
\标题格式{\段落}[hang]
{\normalfont\bfseries}
{}
{0pt}
{}
```
---
KOMA文档类
对于使用KOMA类(如SCRATCL)的文档,使用titlesec无法正常工作,因为KOMA有自己的处理方式。对于这些,请使用以下替代代码段:
---
documentclass: scrartcl
header-includes: |
``` {=latex}
\makeatletter
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{-3.25ex \@plus -1ex \@minus -0.2ex}%
{0.01pt}%
{\raggedsection\normalfont\sectfont\nobreak\size@paragraph}%
}
\makeatother
```
---
而@tarleb的答案肯定是最好的(除了它指定了
垂直空间的数量错误),这里有一个“更简单”(通过某种度量)
但更多的黑客(至少在乳胶术语中)解决方案可以选择使用Pandoc Lua过滤器或乳胶黑客,但避免加载另一个乳胶包
我们希望乳胶源看起来像这样:
pandoc input.md -o output.pdf
\hypertarget{level-4-heading}{%
\段落{4级标题}\标签{4级标题}
\hfill
Lorem ipsum dolor sit amet。
这种乳胶看起来很糟糕,但如果你不需要保存或分享乳胶
source它执行您可能想要的操作:在级别4之间留出一个空间
标题及其后的段落等于第3级之间的空格
标题及其后的段落
下面是它的工作原理:因为一行上的\h填充本身大约是
尽可能接近LaTeX中的空白段落,您将获得第一个
段落-与标题连用的段落-仅包含
水平空白直到行尾,然后立即
新段落后-标题后的实际第一段-
在它和标题之间只有一个正常的段落空格。这
可能也会打乱LaTeX关于段落应该是什么的想法
尽可能少地喜欢
“手动”方式如下所示:
#### Level 4 heading
````{=latex}
\hfill
````
Lorem ipsum dolor sit amet.
这使用了Pandoc相对较新的原始标记语法“代码块”
它实际上是一块未经加工的乳胶块,但它看起来比
结果乳胶源!这也是一个乏味的家务,必须插入
这是在每一个4级标题之后。换句话说,您希望插入该选项
生乳胶自动过滤,可通过Lua过滤器过滤:
--[======================================================================[
latex-h4-break.lua-潘多克过滤器在4级标题后获得中断。
用法:
$pandoc--lua filter latex-h4-break.lua input.md-o output.pdf
--]======================================================================]
--创建一次,多次使用!
本地hfill\u block=pandoc.RawBlock('latex','\\hfill')
函数头(elem)
如果4==元素级,则
返回{elem,hfill_block}
否则--忽略其他级别的标题!
归零
结束
结束
不过,您也可以在标题中进行简单的LaTeX破解,包括
元数据块以获得相同的效果:
---
header-includes:
- |
``` {=latex}
\let\originAlParaGraph\paragraph
\renewcommand{\paragraph}[1]{\originAlParaGraph{#1} \hfill}
```
---
#### Level 4 heading
Lorem ipsum dolor sit amet.
首先创建\paragration
命令的“别名”,然后
然后使用
新的定义使得现在无论在哪里,乳胶源都是由Pandoc创建的
包含