Keldos-Li / typora-latex-theme

将Typora伪装成LaTeX的中文样式主题,本科生轻量级课程论文撰写的好帮手。This is a theme disguising Typora into Chinese LaTeX style.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Typora换页问题请教

Albertchamberlain opened this issue · comments

请问如何保证导出PDF时分页不切分代码块,😄

(本人认为代码块是可以被分割的,应当允许长代码从上一页流排到下一页,因此其他主题,包括本主题都没有对这种分页做出限定。)

但如果您一定要确保分页不切分代码块,在基本版面确定的情况下,那就是代码块从新的一页开始排印。那请在代码块的前面加上该行:

<p style="page-break-before:always"></p>

如,您的文件可能写作:

下面是我们的演示代码:<p style="page-break-before:always"></p>
```python
from functools import cmp_to_key
def cmpkey2(x,y):
    if x[1]>y[1]: return  1
    elif x[1]<y[1]: return  -1
    elif x[0]>y[0]: return  -1
    elif x[0]<y[0]: return  1
    return 0
while True:
    ts = input()
    if ts == '!!!!!': break
    text += ' '; text += ts
    text = text.lower()
for ch in '!.,:*?': text=text.replace(ch, ' ')
(code...)
(code...)
```

这样,您的python演示代码就可以在输出PDF时强制从新的一页开始输出。这个方法同时试用先导出HTML再在浏览器中打印PDF的流程。但显然,如果您的代码长度超过了一页,那还是无法解决您代码不被切分的需求。

关于换页,这个方法是通用的。不管对于<p>标签还是<div>标签,亦或是<img><table>等标签,都适用page-break-beforepage-break-after样式强制命令用户代理插入分页。若想在元素前换页,可以写

<div style="page-break-before:always">元素(或留空直接换页)</div>

如果想在元素结束后换页,可以写

<div style="page-break-after:always">元素(或留空直接换页)</div>

诸如此类。

比如,我放在仓库中的essay-template.md的论文封面,第一行html就写到了这个样式,因此才会在这个div结构结束之后强制换页。

对于page-break-before,相关的参数值放在下面,page-break-after的参数值也与之类似,不再赘述。

描述
auto 默认值。如果必要则在元素前插入分页符。
always 在元素前插入分页符。
avoid 避免在元素前插入分页符。
left 在元素之前足够的分页符,一直到一张空白的左页为止。
right 在元素之前足够的分页符,一直到一张空白的右页为止。
inherit 规定应该从父元素继承 page-break-before 属性的设置。