一次运行即可编译打印版本并显示版本

一次运行即可编译打印版本并显示版本

我经常需要创建两份内容相同但布局不同的文档:一份用于打印,另一份为数字文档。因此,必须进行一些小改动,例如其他边距、页码、文档设置从单面到双面等。

到目前为止,我编译了两次文档,以使两个文档都正确无误。如果我可以定义两种页面样式(比如说打印和显示)并自动运行编译两次(每种页面样式各一次),这样我就可以得到我需要的两个不同的 pdf 文件,这样就简单多了。

我已经阅读了一些类似的帖子,但还是不明白。有人能帮我吗?

我用来定义打印文档布局的代码是:

\documentclass[10 pt, a4paper, twoside, openright]{book}
\usepackage{fancyhdr}
\usepackage{geometry}

\geometry{vmargin=2.5cm, inner=3cm, outer=2cm, headheight=11pt}             
\pagestyle{fancy}    
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\fancyhead[RE]{\small\nouppercase{\textbf{\textit{\leftmark}}}}
\fancyhead[LO]{\small\nouppercase{\textit{\rightmark}}}
\fancyfoot[LE,RO]{\thepage}

显示版本使用此布局设置:

\documentclass[10 pt, a4paper, oneside, openany]{book}
\usepackage{fancyhdr}
\usepackage{geometry}

\geometry{margin=2.5cm, headheight=11pt}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\fancyhead[R]{\small\nouppercase{\textbf{\textit{\leftmark}}}}
\fancyfoot[R]{\thepage}

答案1

使用两个不同的引擎,pdfLaTeX 和 LuaLaTeX

使用两个不同的引擎,pdfLaTeX 和 LuaLaTeX,以及包ifluatex

未经测试的代码:

\documentclass...
all the packages you need for both variants.

\ifluatex
code for the digital version
\usepackage{fontenc}
\setmainfont...

\else
code for the printed version
\usepackage[T1]{fontenc}\usepackage[utf8]{inputenc}...

\fi
\begin{document}

所以你只需要编译一次,重命名 PDF,更改引擎,再编译一次。通常我甚至会在印刷版和数字版之间更改字体,因为屏幕上的某些字体比印刷版更好读。

有时我甚至需要三个版本,即使用 生成 html 文档的简化版本tex4ht。引擎htlatex加载 tex4ht,我们可以使用它来制作另一个分支:

\newif\ifhtlatex
\@ifpackageloaded{tex4ht}{%

别忘了重命名第一个 PDF,但我确信也有办法自动完成这一操作。希望对您有所帮助!

相关内容