LaTeX是优秀的跨平台计算机排版软件,具体就不多介绍。虽然我大概是不会有那种程度的科技类文章的排版需要的,不过作为一种技术本身,我还是愿意去涉猎一下。综合目前网上的各种教程,我发现最省心的配置还是xetex加ctex,这样可以省去配置中文编码、字体的种种麻烦。一步到位,轻松解决。
安装
有人说要专门下载一个Live CD,我觉得没这个必要。Ubuntu的软件源里同样有这些软件。即使不使用其自带的包管理器,使用新立得包管理器也可以方便地查找相关包的信息。一般情况,你可能只需要选择下载支持UTF-8的并能用xelatex直接生成PDF的texlive-xetex,和包含ctex的texlive-lang-cjk即可,其余的必需部件根据依赖关系就可以自动搞定。不过,如果你硬盘空间充足,我仍然建议你直接安装texlive-full,这样便将所有可能用到的包全部下载下来了,尽管你不会用到其中的大部分。终端下部分安装:
sudo apt-get install texlive-xetex texlive-lang-cjk全部安装:
sudo apt-get install texlive-full
使用
对于初学者,我推荐《一份不太简短的LaTex介绍》作为一般的入门教程。如果你希望获得更多的中文排版知识,《ctex 宏包说明》则是很好的参考资料,特别是对于使用ctex宏包的我们而言。以上两份资料网上都很容易获得。一般简单文件的模版如下(抱歉语法高亮目前不支持):
% 关于文档的一些基本设置 \documentclass[a4paper, adobefonts]{ctexart} \setCJKmainfont{SimSun} % 设置标题信息 \title{标题} \author{作者} \date{\today} \begin{document} % 打印标题信息 \maketitle % 正文开始 你好,世界。(或者其他什么内容) \end{document}关于字体,我推荐Linux用户设置adobefonts,虽然理论上可以从别的Windows复制宋体、黑体、楷体等等来使用,但总觉得不太好。
文档编辑完后,保存为.tex文件,例如test.tex。LaTeX对后缀名还是比较敏感的,不喜欢后缀名的用户需要注意这一点。然后在终端下我们直接输出PDF:
xelatex test.tex得到test.pdf。虽然没有错误,但仍然有很多信息输出,感兴趣可以看一下。如果有错误,那就必须仔细研读了。
编辑器
Windows下有很多好用的编辑器,Linux下也有,不过稍微弱一些,但不至于非常影响使用就是了。虽然有专门为TeX设计的编辑器,如Gummi等,我还是推荐Gedit加上LaTeX插件来使用。但无论如何,它们都需要一定的配置。Gummi的亮点在于它提供了一个实时预览界面,你可以一边编辑一边查看结果。安装:
sudo apt-get install gummiGummi中,要在设置里将编译器设置为xetex,因为默认的不可用,其他设置随意。
Gedit虽然是GNOME环境默认的编辑器,依靠扩展它仍然可以变得很强大。安装:
sudo apt-get install gedit-latex-plugin然后打开gedit并启用此插件。在插件设置中添加一个编译命令:
xelatex $filename调整到你喜欢的位置即可。在Gedit中,你可能还要在“查看”菜单中打开侧边栏、底部面板才能用个痛快,或许安装一个终端插件也不错。具体细节就交给大家自己去探索吧。
与其他文件格式的关系
HTML
Tex文件自然是可以转换为PDF的,可惜一般来说是不可逆的,而HTML和它却能双向转换。但也许你也能猜到,显然tex变成HTML会损失许多细节,好在内容主体还算完好,修改一下应该不是很困难的事。我在源中发现了LaTeX2HTML和gnuhtml2latex,具体没用过,大家可以试一试。Markdown
Markdown是最近知名度突然变高的语言。它是纯文本,却也是有格式的纯文本,格式的标记十分友好,在可读性和机器的可识别性上取得了极佳的平衡。许多人喜欢直接用它来写各种文档。使用pandoc可以把markdown文件转换为PDF。乍一看和LaTeX没什么关系,可它并不能直接生成PDF,必须使用tex来过渡。默认的tex模版并不适合中文文档,强行使用必然报错。我尝试折腾了一个中文模板,对付简单的文件似乎问题不大,大家可以根据自己的需要修改。(虽然貌似大部分看不太懂。我也是新手啊。)\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$lang$,$endif$$if(papersize)$$papersize$,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{amssymb,amsmath} \usepackage{ifxetex,ifluatex} \usepackage{fixltx2e} % provides \textsubscript % use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex \usepackage[utf8]{inputenc} $if(euro)$ \usepackage{eurosym} $endif$ \else % if luatex or xelatex \ifxetex \usepackage{mathspec} \usepackage{xltxtra,xunicode} \usepackage[adobefonts]{ctex} \setCJKmainfont{SimSun} \setCJKsansfont{SimHei} \setCJKmonofont{WenQuanYi Micro Hei Mono} \else \usepackage{fontspec} \fi %\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} \newcommand{\euro}{€} \setmainfont{Times New Roman} $if(mainfont)$ \setmainfont{$mainfont$} $endif$ $if(sansfont)$ \setsansfont{$sansfont$} $endif$ $if(monofont)$ \setmonofont[Mapping=tex-ansi]{$monofont$} $endif$ $if(mathfont)$ \setmathfont(Digits,Latin,Greek){$mathfont$} $endif$ \fi % use microtype if available \IfFileExists{microtype.sty}{\usepackage{microtype}}{} $if(geometry)$ \usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} $endif$ $if(natbib)$ \usepackage{natbib} \bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} $endif$ $if(biblatex)$ \usepackage{biblatex} $if(biblio-files)$ \bibliography{$biblio-files$} $endif$ $endif$ $if(listings)$ \usepackage{listings} $endif$ $if(lhs)$ \lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} $endif$ $if(highlighting-macros)$ $highlighting-macros$ $endif$ $if(verbatim-in-note)$ \usepackage{fancyvrb} $endif$ $if(tables)$ \usepackage{longtable,booktabs} $endif$ $if(graphics)$ \usepackage{graphicx} % Redefine \includegraphics so that, unless explicit options are % given, the image width will not exceed the width of the page. % Images get their normal width if they fit onto the page, but % are scaled down if they would overflow the margins. \makeatletter \def\ScaleIfNeeded{% \ifdim\Gin@nat@width>\linewidth \linewidth \else \Gin@nat@width \fi } \makeatother \let\Oldincludegraphics\includegraphics {% \catcode`\@=11\relax% \gdef\includegraphics{\@ifnextchar[{\Oldincludegraphics}{\Oldincludegraphics[width=\ScaleIfNeeded]}}% }% $endif$ \ifxetex \usepackage[setpagesize=false, % page size defined by xetex unicode=false, % unicode breaks when used with xetex xetex]{hyperref} \else \usepackage[unicode=true]{hyperref} \fi \hypersetup{breaklinks=true, bookmarks=true, pdfauthor={$author-meta$}, pdftitle={$title-meta$}, colorlinks=true, citecolor=$if(citecolor)$$citecolor$$else$blue$endif$, urlcolor=$if(urlcolor)$$urlcolor$$else$blue$endif$, linkcolor=$if(linkcolor)$$linkcolor$$else$magenta$endif$, pdfborder={0 0 0}} \urlstyle{same} % don't use monospace font for urls $if(links-as-notes)$ % Make links footnotes instead of hotlinks: \renewcommand{\href}[2]{#2\footnote{\url{#1}}} $endif$ $if(strikeout)$ \usepackage[normalem]{ulem} % avoid problems with \sout in headers with hyperref: \pdfstringdefDisableCommands{\renewcommand{\sout}{}} $endif$ \setlength{\parindent}{0pt} \setlength{\parskip}{6pt plus 2pt minus 1pt} \setlength{\emergencystretch}{3em} % prevent overfull lines $if(numbersections)$ \setcounter{secnumdepth}{5} $else$ \setcounter{secnumdepth}{0} $endif$ $if(verbatim-in-note)$ \VerbatimFootnotes % allows verbatim text in footnotes $endif$ $if(lang)$ \ifxetex \usepackage{polyglossia} \setmainlanguage{$mainlang$} \else \usepackage[$lang$]{babel} \fi $endif$ $for(header-includes)$ $header-includes$ $endfor$ $if(title)$ \title{$title$} $endif$ $if(subtitle)$ \subtitle{$subtitle$} $endif$ \author{$for(author)$$author$$sep$ \and $endfor$} \date{$date$} \begin{document} $if(title)$ \maketitle $endif$ $for(include-before)$ $include-before$ $endfor$ $if(toc)$ { \hypersetup{linkcolor=black} \setcounter{tocdepth}{$toc-depth$} \tableofcontents } $endif$ $body$ $if(natbib)$ $if(biblio-files)$ $if(biblio-title)$ $if(book-class)$ \renewcommand\bibname{$biblio-title$} $else$ \renewcommand\refname{$biblio-title$} $endif$ $endif$ \bibliography{$biblio-files$} $endif$ $endif$ $if(biblatex)$ \printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$ $endif$ $for(include-after)$ $include-after$ $endfor$ \end{document}假如markdown文件为test.md,模版文件名为latex.template.cjk.tex,你可以用pandoc作如下转换:
pandoc test.md -o test.pdf --latex-engine=xelatex --template=latex.template.cjk.tex