合并多个pdf文件

整理一下各种合并多个pdf文件的方法,参考了这些网站(还有忘了的):https://tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by-latex, https://tex.stackexchange.com/questions/284632/include-multiple-pdf-documents-and-create-bookmark-to-first-page

  1. 用LaTeX来整合(可以添加书签):

  2. \documentclass{article}% or something else
    \usepackage{pdfpages}
    \begin{document}
    \includepdf[pages=-]{paper1}
    \includepdf[pages=-]{paper2}
    \end{document}


    \documentclass{article}
    \usepackage{lipsum,bookmark,pdfpages}
    \begin{document}
    \section{A section}
    \lipsum[1-3]
    \includepdf[link]{1.pdf}
    \includepdf[link]{2.pdf}
    \bookmark[dest={1.pdf.1}]{1.pdf}
    \bookmark[dest={2.pdf.1}]{2.pdf}
    \end{document}

  3. pdftk

  4. $ pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf

  5. GhostScript

  6. $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf source1.pdf source2.pdf source3.pdf etc.pdf

  7. PDFJAM

  8. $ pdfjoin foo1.pdf foo2.pdf --outfile bar.pdf

  9. cpdf

  10. cpdf foo1.pdf foo2.pdf -o bar.pdf

  11. PDF-Shuffler (Linux, free software)
  12. LibreOffice(可以小范围编辑pdf文档)

latex to rtf, doc, docx, odt

1. 用latex2html可以把文件先转换成为一个html文件。这个时候可以选择用mathjax格式的数学公式,还是图片格式的数学公式。如果选择图片格式,则latex2html会生成一堆图片。
2. 得到html格式的文档之后,用openoffice打开,就能够转存成为odt,doc, docx等格式。

实际上,第一步也可以通过tex4ht来完成(mk4ht oolatex, 或者,htlatex)。如果用tex4ht来完成,很多的公式默认情况下会保留文字。当然,和latex2html一样,都可以通过参数来控制数学公式的输出,例如变成mathjax、mathml格式。

用latex2rtf也可以直接实现转换latex为rtf(latex2rtf -M12)。

用pandoc原则上也能实现这个功能,不过,公示显示、公式交叉引用、参考文献这些没有上面的几个方案效果好。

注意,上面无论哪个工具,都依赖于ImageMagick的convert。有必要可以通过从源文件编译安装ImageMagick的方式,甚至从源文件安装latex2html的方式,来更新软件。操作系统本身程序库里面包含的相应软件,不一定能够实现这些功能。

latex索引格式语法

一本书的引文、人名和专有名词索引是非常重要的,能够给读者提供很多帮助。在Latex里面,引文比较简单,用bib文件和\cite命令就可以自动完成。索引稍微麻烦一点。

首先,需要一个索引列表,类似下面的定义的每一个人名或者专有名词。

\newglossaryentry{name:Newton}{type=name, name=Newton, text=Newton, description={Isaac Newton(牛顿)}, sort=Newton}
\newglossaryentry{term:经典力学}{type=term, name=经典力学, text=经典力学, description=Classical Mechanics, sort=JingDianLiXue}
\newglossaryentry{term:Newton力学}{type=term, name=Newton力学,text=Newton力学, description=以Newton第二定律为核心的力学, sort=Newton力学, parent=term:经典力学}

其次,需要在正文中功过\gls{name:Newton}使用这些索引项。

接着,只要在Latex的声明部分做过如下的说明,在系统运行下面的命令之后,就会自动产生高质量的索引。

\usepackage[nomain,acronym,xindy,toc, style=alttreehypergroup,nolong,nosuper]{glossaries}
% The alttree type of glossary styles need to know the
% widest entry name for each level
\glssetwidest{term:Lagrangian方程} % level 0 widest name,找出来你的列表中最长(0级索引项)的名字,这样系统好对齐
\glssetwidest[1]{term:Lagrangian方程} % level 1 widest name,找出来你的列表中最长(1级索引项)的名字
\glssetwidest[2]{term:Lagrangian方程} % level 2 widest name,找出来你的列表中最长(2级索引项)的名字

\usepackage[xindy]{imakeidx}
\usepackage{listings}
\newglossary[tm]{term}{term}{te}{名词索引}
\newglossary[nm]{name}{name}{na}{人名与常用翻译}
\makeglossaries

编译阶段,在xelatex 文件名以及bibtex 文件名之间,加入运行一个makeglossaries 文件名,就会自动的到索引。为了索引格式正确,需要多次运行xelatex 文件名 这个命令。

万能格式转换器pandoc用于书稿格式转换

一直打算把我的latex格式的书稿变成markdown格式和mediawiki格式,或者html格式。原来latex2html可用,不过遇到中文,会出很多问题。现在终于找到了pandoc万能格式转换器。太牛了,基本上转换了以后是可读的,需要额外修改的工作量不是很大。

按照pandoc的介绍,它能够把Markdown, reStructuredText, textile, HTML, DocBook, LaTeX, MediaWiki markup, TWiki markup, TikiWiki markup, Creole 1.0, Vimwiki markup, OPML, Emacs Org-Mode, Emacs Muse, txt2tags, Microsoft Word docx, LibreOffice ODT, EPUB 和 Haddock markup 转化成HTML, Word,Ebooks,TeX家族,PDF。实在太强大了。

pdflatex 包含字体

转自http://www.boekenenproefschriften.nl/proefschriften/sites/default/files/EmbedLaTeXfonts.pdf

To ensure that pdflatex embeds the fonts in your document, edit the updmap config file by locating updmap.cfg (for MikTeX it’s in MikTeX_install_dir/miktex/config) and editing it. On Linux systems you can also enter the command
updmap –edit
to edit the config file. Find the lines
#

pdftexDownloadBase14

#

Should pdftex download the base 14 pdf fonts? Since some configurations

(ps / pdf tools / printers) use bad default fonts, it is safer to download

the fonts. The pdf files will get bigger, though.

Valid settings are true (download the fonts) or false (don’t download

the fonts).

pdftexDownloadBase14 true

Make sure pdftexDownloadBase14 is set to true. If it is not, change it, and run updmap once. That’s it!