我经常需要创建两份内容相同但布局不同的文档:一份用于打印,另一份为数字文档。因此,必须进行一些小改动,例如其他边距、页码、文档设置从单面到双面等。
到目前为止,我编译了两次文档,以使两个文档都正确无误。如果我可以定义两种页面样式(比如说打印和显示)并自动运行编译两次(每种页面样式各一次),这样我就可以得到我需要的两个不同的 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,但我确信也有办法自动完成这一操作。希望对您有所帮助!