Showing posts with label TeX. Show all posts
Showing posts with label TeX. Show all posts

Friday, January 21, 2011

AsciiDoc简介

原文发表于「桃源」: http://linux.cuit.edu.cn/?p=1157

AsciiDoc是什么?

AsciiDoc 是一种简单的基于纯文本的文档生成工具, 与它类似的还有 reStructuredText, Markdown. 说是生成文档, 其实它可以将纯文本文件转换成各种类型, 比如:

使用AsciiDoc进行文档编写最著名的恐怕是Git官方的 Git User’s Manual (我表示对于初学者很难看懂), 这篇博客也是通过AsciiDoc生成, 文后会附上本文的原始代码以便参考.

Monday, October 19, 2009

Beamer初学小记

Beamer是专业的幻灯片制作工具, 基于LaTeX, 因此学习Beamer你需要首先具备一点LaTeX的知识. 最近要弄一个幻灯片, 遂折腾之, 小记一下.

Beamer其实就是LaTeX的一个文档类 (documentclass), 和普通LaTeX文件一样, 最需要折腾的就是导言区 (preamble), 不过对于中文用户来说, 还有一个额外的东西需要考虑: 怎样才能输出中文. CCT、CJK和xeCJK都行, 不过我们现在有了更方便的选择: CTeXKit, 关于CTeXKit的详细介绍, 可以参考我以前的文章[CTeXKit: 尽情享受中文排版]. 由于Beamer已经占用了文档类, 所以就只能用直接调用宏包的方式了.

建议先从别人的模板开始练习, 这里是Beamer官方提供的几个模板. 然后参考官方文档学习, 我觉得那个文档很不错, 看着很有意思, 其中用一个生动的例子把Beamer的一些要点都介绍了. Beamer不同于普通LaTeX文档的一点就是它可以设置主题, 访问这个网站, 上面有Beamer所有默认主题 (theme) 和颜色主题 (colortheme) 的截图, 方便大家的选择, 另外网上也有很多非官方的主题.

我在使用的时候还遇到一个小问题, 由于我用的是Emacs + AUCTeX, 在每次打开Beamer文件时, AUCTeX会很"贴心"地根据inputenc宏包的编码设置自动改变Emacs的编码, 而我一开始用的是Beamer的官方模板, 其中inputenc的编码配置为latin1, 直接导致我每次重新打开Emacs的时候都会发现其中的中文变成了火星文... 为了解决这个问题, 在网上找了很久, 最后才想到老外可能和天朝人民有点不同, 于是发现刚才说的问题.

相对于广泛使用的PowerPoint, Beamer显得朴素很多, 没有绚丽的动画, 没有五彩的背景, 但Beamer想要表达的是一段演讲的精彩不在于使用的幻灯片有多么得华丽, 幻灯片只是一个用来展示的辅助工具而已, 一切还在于演讲的人, 正如和菜头所说"PPT的流行意味着两件事:一、人们的听力理解能力下降了。二、人们的口头表达能力下降了。"

附上我的Beamer模板:
\documentclass[utf8]{beamer}    % Be care of 'utf8', change it depend on your system.

\mode<presentation>
{
  \usetheme{Darmstadt}
  \usecolortheme{seahorse}
  \setbeamercovered{transparent}
}

\usepackage[english]{babel}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amssymb}

\usepackage{ctex}

% Title Page
\title{\textbf{For Alist}}
% \subtitle{\textbf{}}
\author{Dreamseeker \\ \texttt{gaochangjian@gmail.com}}
\institute{反GFW小组}
\date{2007年12月1日}

% This is only inserted into the PDF information catalog.
% Can be left out. 
\subject{Talks}

% Logo
\pgfdeclareimage[height=1cm]{logo}{pic/logo.jpg}
\logo{\pgfuseimage{logo}}

% For LaN
\newcommand{\LaN}{L{\scriptsize\hspace{-0.47em}\raisebox{0.23em}{A}}\hspace{-0.1em}N}

% Delete this, if you do not want the table of contents
% to pop up at the beginning of each section and subsection:
\AtBeginSection[]
{
  \begin{frame}<beamer>{Outline}
    \tableofcontents[currentsection]
  \end{frame}
}
% \AtBeginSubsection[]
% {
%   \begin{frame}<beamer>{Outline}
%     \tableofcontents[currentsection,currentsubsection]
%   \end{frame}
% }

% % If you wish to uncover everything in a step-wise fashion,
% % uncomment the following command: 
% \beamerdefaultoverlayspecification{<+->}

\begin{document}

\begin{frame}
  \titlepage
\end{frame}

\begin{frame}{Outline}
  \tableofcontents
\end{frame}

\end{document}

Monday, July 27, 2009

CTeXKit: 尽情享受中文排版

这是一个始于2003年的古老项目, 那时的人们只是在零零散散地为LaTeX中文排版做着贡献. 2009年5月, CTeX正式在Google Code上建立ctex-kit项目, 标志着整合中文排版的开始.

作为汉语使用者, 一定会为在TeX/LaTeX中排版中文伤透脑筋, 幸好还有很多默默奉献的人们, 他们的努力为我们解决了这些苦恼. CJK, CCT, xeCJK, 这些熟悉的名字, 到现在我还能记得当初用上xeCJK时的喜悦与兴奋. 当我又发现了CTeXKit时, 我知道, 中文排版的荣耀来临了. CTeXKit带给我的是从未有过的舒适, 一切都是这样自然、平滑, 我豁然发现, 原来中文排版是如此值得享受的一件事情.

以下是CTeXKit的简介:
CTeXKit提供了一个统一的中文LaTeX文档框架, 底层支持CCT、CJK和xeCJK三种中文LaTeX系统. CTeXKit提供了编写中文LaTeX文档常用的一些宏定义和命令.
说简单一点, CTeXKit整合了现在几乎所有的中文排版宏包, 使得中文排版不再是一件费力的事情.

安装CTeXKit的步骤很简单, 先从Google Code上下载:
$ cd ~/texmf/tex/latex/
$ svn checkout http://ctex-kit.googlecode.com/svn/trunk/ ctex-kit-read-only
$ sudo mktexlsr
然后看你是用的CCT, CJK, 还是xeCJK, 这里只讲下我使用的xeCJK. 刚才svn下来的CTeXKit包含了最新版的xeCJK, 但需要XeTeX 0.9995.0以后版本才能使用. 我安装的TeX Live 2008里的XeTeX的版本为0.999.6 (很奇怪的版本号, 不知道该怎么和前面的比较...), 编译会报错, 应该是版本太低了, 可以到这里下载xeCJK 2.2.15, 这个版本是支持小于0.9995.0的最后一版xeCJK. 再把刚才svn里的xeCJK删了就行了, 所有步骤如下:
$ cd ~/texmf/tex/latex/
$ unzip ~/xecjk-2_2_15.zip
$ cd ctex-kit-read-only
$ svn rm xecjk
$ sudo mktexlsr

该如何使用呢? CTeXKit提供了三种额外的document class: ctexart, ctexbook, ctexrep, 你既可以直接使用这三种, 也可以调用相应的宏包:
\documentclass{ctexart}  % 推荐使用这种

或者

\documentclass{article}
\usepackage{ctex}
然后是字体设置, 默认的配置在ctex/cfg/ctexopts.cfg.template文件中, 共有4种字体选项: nofonts, cjkfonts, winfonts, adobefonts. 注意你的系统中一定要有相应的字体文件, 比如说使用adobefonts就必须有Adobe的四套中文字体: Adobe Song Std, Adobe Heiti Std, Adobe Kaiti Std, Adobe Fangsong Std. 以上都搞定以后, 就可以编译了. 同时CTeXKit还提供了很多选项可以设置, 详细内容请参考ctex/doc/ctex.pdf文件.

这里有一份我的TeX文件模板, 可以作为参考. 顺便预告下, 近期将会推出LaTeX Tips专题.

Thursday, March 5, 2009

又建了一个项目 -- texsky

今天在Google Code上又给自己建了个项目: texsky, 专门用来存放我个人的LaTeX文档和源文件. 作为第一个上传进去的文档, 是前几天写的关于安装和配置LAMP的小手册, 吾以为写得那叫一个细致, 完全不是Blog上的风格, 估计只要不是文盲再加点RP看完这个都能用上自己编译的LAMP (当然, 不包括L, XD).

Sunday, October 19, 2008

终于用上xeCJK!

以前在Ubuntu的时候就因为源里的XeTeX版本太低了而无法使用 (源里的是0.996, 偏偏xeCJK需要0.997以上...), 现在好了, TeX Live 2008出来了, 用Arch源里的装好以后XeTeX的版本也上去了:
$ xetex --version
XeTeX 3.1415926-2.2-0.999.6 (Web2C 7.5.7)
kpathsea version 3.5.7
Copyright 2008 SIL International.
Kpathsea is copyright 2008 Karl Berry and Olaf Weber.
There is NO warranty. Redistribution of this software is
covered by the terms of both the XeTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the XeTeX source.
Primary author of XeTeX: Jonathan Kew.
Kpathsea written by Karl Berry, Olaf Weber, and others.

Compiled with ICU version 3.8.1 [with modifications for XeTeX]
Compiled with zlib version 1.2.3; using 1.2.3.3
Compiled with FreeType2 version 2.3.7; using 2.3.7
Compiled with fontconfig version 2.6.0; using 2.6.0
Compiled with libpng version 1.2.29; using 1.2.32
Compiled with xpdf version 3.02pl2
感觉就是一个字: 爽! 哈哈~

顺便记下Arch下安装LaTeX+XeTeX+常用宏包的过程:
$ sudo pacman -S texlive-core texlive-latexextra

然后到CTeX论坛上下载xeCJK, 将相应文件放到texlive的安装目录里, 刷新文件名数据库:
$ sudo mktexlsr

最后就是修改导言区了:
\usepackage{xeCJK}

\setmainfont[BoldFont=Adobe Heiti Std]{Adobe Song Std} % 设置默认的英文字体
\setCJKmainfont[BoldFont=Adobe Heiti Std]{Adobe Song Std} % 设置默认的中文字体

很简单是吧? Just enjoy.

Sunday, September 21, 2008

这几天使用LaTeX的一些新感受

在学校找了个用LaTeX排版的差事, 也不知道能做多久, 不过花了3天时间排了本近60页的杂志, 还是很有成就感的, 嘿嘿~

期间也发现有一些遗忘的地方, 于是我这几天干的最多的一件事情就是在CTeX论坛上搜和在Google上搜, 对于以前的一些东西又有了新的理解.

先来说说代码显示吧, 以前用了一个很笨的方法来做出那种灰色背景的效果, 结果在排大猫的那段很长很长的代码时出现了问题. 那代码要跨页, 所以以前的表格方法不能把代码全部显示出来, 导致大量代码被丢弃了, 很显然这种方法已经行不通了. 于是上网去找解决方案, 找到一个listings的宏包, 看介绍不错, 还支持语法高亮呢. 然后就兴致勃勃地用上了, 实现灰色背景还是很简单的, 可一编译又发现了一个很严重的问题, 如果某行代码太长超过一行了, 虽然listings可以自动换行, 但那行就没有灰色背景了! 这样的效果可想而知, 于是我还很认真地花了一些时间去把listings的说明文档好好看了一遍, 想找找有没有什么解决的办法, 结果还是失败了, 不过看CTeX论坛上也是有些人遇到这种情况, 而有些人正常, 难道是人品问题 (- -)? 没办法, 为了好的代码显示效果, 只能另辟蹊径了. 恐怕我当初也不会想到, 最后的方法竟然如此简单, 仅仅是把代码放在一个shaded环境里就行了, 如下:
\usepackage{color}
\usepackage{framed}

\definecolor{shadecolor}{gray}{0.85}
放在导言区就行了, 然后像这样处理代码:
\begin{shaded}
\begin{verbatim}
...
\end{verbatim}
\end{shaded}
什么跨页, 什么换行, 一切都搞定, 哈哈~

然后还是讲讲代码, 当初我在排第一段代码的时候就遇到了困难, 因为这里面有中文注释... 以前从来没考虑过这种事情, 查了下, 是verbatim环境使用的字体Typewriter不支持显示中文的缘故, 这也是LaTeX默认用来显示代码的字体. 不过看别人用CJK的显示都是正常的, 看来CJK确实要高级些, 没办法, 谁叫咱用的是XeTeX, 毕竟现在还不是很成熟. 我想用xeCJK啊, 残念, 编译不出来就这样, 唉~ 然后在这里找到了解决办法:
\setsansfont{DejaVu Sans YuanTi Mono}
\makeatletter
\def\verbatim@font{\sffamily\small}
\makeatother
只好忍痛替换了tt字体, 用上了猪猪的强大字体, 等宽加中文都支持.

因为杂志的栏目分类不能出现编号, 所以默认的那种是不行的, 下面是解决:
\phantomsection % 让目录中的链接正确
\section*{\textcolor{darkgreen}{\textbf{本刊致谢}}} % 不显示编号, 并且不出现在目录中
\addcontentsline{toc}{section}{卷首语} % 添加到目录中
\sectionmark{卷首语} % 页眉

关于浮动环境, 这个以前真的是很头疼的, 往往它不会按照所设想的位置放置, 搞得某些图片直接占据了一整页. 然后某天在CTeX上看到一个很强大的回复, 可以把浮动环境放在任何你需要的地方, 一个字, 爽! 如下:
\usepackage{float}

\begin{figure}[H] % 就是这个神奇的H
...
\end{figure}

还有一个计数器的问题, 因为杂志有一个封面, 所以会占据掉一整页. 这样正文就是从第2页开始计数了, 虽然是个小问题, 不过还是希望能够符合习惯点. 解决也很简单的, 这还得归功于图书馆的那本强大的LaTeX书, 如下:
\setcounter{page}{0}
这句就将页码的计数器设置为0了, 所以放在第2页的代码前面就行了.

P.S. 因为杂志的缘故, 认识了joy, 牛逼的Emacs, Python, shell脚本使用者, 好好学习, 天天向上.

Saturday, August 23, 2008

配置LaTeX & XeTeX & AUCTeX

这几天折腾了一下LaTeX, 对于其中的概念也有了一些了解. 这篇日志主要是说下在Ubuntu 8.04下配置LaTeX+XeTeX环境的过程, 还有Emacs里的AUCTeX的配置.

  1. 首先是LaTeX与XeTeX的安装
  2. $ sudo apt-get install texlive texlive-latex-extra texlive-xetex lmodern

    当时为了安装最新的XeTeX, 花了很多时间在编译安装上, 最后只弄好一个半成品, 无法使用. 于是决定舍弃zhspacing宏包, 直接装了源里的XeTeX.

    经过以上步骤后, 应该就可以正常编译TeX文件了, 用XeTeX调整字体也很爽. 如果你也使用Emacs来编辑TeX文件的话, 那么一定要安上AUCTeX这个扩展, 下面是一些配置详情.

  3. AUCTeX
  4. $ sudo apt-get install auctex

    安装好以后, 重点是配置.emacs文件, 因为AUCTeX本身是不支持通过xelatex编译的.
    ;; AUCTeX
    (defun auctex ()
      (add-to-list 'TeX-command-list '("XeLaTeX" "%`xelatex%(mode)%' %t; %`xelatex%(mode)%' %t" TeX-run-TeX nil t)) ;; 这里我编译了两次
        (setq TeX-command-default "XeLaTeX") ;; 设定默认编译命令为XeLaTeX
        (setq TeX-save-query nil)            ;; 保存之前不询问
        (setq TeX-show-compilation t))       ;; 在新窗口显示编译过程
    (add-hook 'LaTeX-mode-hook 'auctex)
    
    (custom-set-variables
     '(TeX-output-view-style (quote (("^dvi$nnnnnnn" ("^landscape$" "^pstricks$\\|^pst-\\|^psfrag$") "%(o?)dvips -t landscape %d -o && gv %f") ("^dvi$" "^pstricks$\\|^pst-\\|^psfrag$" "%(o?)dvips %d -o && gv %f") ("^dvi$" ("^a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4$" "^landscape$") "%(o?)xdvi %dS -paper a4r -s 0 %d") ("^dvi$" "^a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4$" "%(o?)xdvi %dS -paper a4 %d") ("^dvi$" ("^a5\\(?:comb\\|paper\\)$" "^landscape$") "%(o?)xdvi %dS -paper a5r -s 0 %d") ("^dvi$" "^a5\\(?:comb\\|paper\\)$" "%(o?)xdvi %dS -paper a5 %d") ("^dvi$" "^b5paper$" "%(o?)xdvi %dS -paper b5 %d") ("^dvi$" "^letterpaper$" "%(o?)xdvi %dS -paper us %d") ("^dvi$" "^legalpaper$" "%(o?)xdvi %dS -paper legal %d") ("^dvi$" "^executivepaper$" "%(o?)xdvi %dS -paper 7.25x10.5in %d") ("^dvi$" "." "%(o?)xdvi %dS %d") ("^pdf$" "." "acroread %o %(outpage)") ("^html?$" "." "netscape %o")))))
    最后那个有点长, 主要是没有找到合适的方法像添加XeLaTeX一样只需要写新增的条目, 所以这里就把原有的和修改以后的都写了出来. 其实只改了一个地方, 已经用红色标注出来了, 就是在使用C-c C-v预览PDF文件的时候使用什么软件来打开. 我这里就是acroread, 你用的其它的话, 可以相应修改.

    这样修改好以后, 以后就可以直接使用C-c C-c编译, C-c C-v预览, C-c `在错误间跳转了.

    8月5日更新:
    如果不是用的源安装的LaTeX, 比如我为了用上最新版的XeTeX, 就选择单独安装TeX Live. 这时再用源安装AUCTeX的时候, 会因为依赖关系而又把源里的LaTeX相关包给装上, 囧

    不过幸运的是这并不会与TeX Live冲突, 原因在于:
    $ echo $PATH
    /home/xiaogaozi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
    嘿嘿, 我的TeX Live的可执行文件都放在了/usr/local/bin里, 而源里安装的放在了/usr/bin, 自然优先级不同啦~

    但是TeX Live中的install-info文件会导致源安装AUCTeX的时候失败, 所以如果是先安装的TeX Live, 再安装AUCTeX, 就需要先把TeX Live的install-info"消灭"掉:
    $ sudo mv /usr/local/bin/install-info /usr/local/bin/install-info.bak

附上我的TeX文件模板, 很杂, 也许有的在article上能用上, 而有的则只能在book上用上.

\documentclass[adobefonts]{ctexart}

\CTEXoptions[captiondelimiter={\quad}]

\usepackage{amsmath}            % AMS的数学宏包
\usepackage{amssymb}            % AMS的数学符号宏包
\usepackage{graphicx}           % 插入图片需要的宏包
\usepackage{float}              % 强大的浮动环境控制宏包
\usepackage{framed}             % `shaded'环境需要用到
\usepackage{enumitem}           % 增强列表功能
\usepackage{alltt}              % 在`alltt'环境中为等宽字体, 但可以使用LaTeX命令

% \usepackage{shortvrb}           % 简化\verb的写法
% \MakeShortVerb{\|}

\usepackage{color}              % 可以定义各种颜色
\usepackage[x11names]{xcolor}   % 下面的RoyalBlue3颜色需要用到的宏包
% 自定义的几种颜色
\definecolor{shadecolor}{gray}{0.85}
% \definecolor{darkblue}{rgb}{52,101,164}
% \definecolor{darkgreen}{rgb}{78,154,6}

% % 设置背景颜色
% \definecolor{bisque}{rgb}{.996,.891,.755}
% \pagecolor{bisque}

\usepackage[pdfauthor={Dreamseeker},
            pdftitle={For Alist},
            colorlinks=true,
            urlcolor=blue,
            linkcolor=RoyalBlue3]{hyperref} % 为超链接设置颜色, 修改PDF文件信息

\title{\textbf{For Alist}}
\author{Dreamseeker}
% \date{}

\usepackage[pagestyles]{titlesec} % 定制页眉页脚
% % 设置页眉页脚
% \newpagestyle{main}{%
%   \sethead[$\cdot$~\thepage~$\cdot$][][\thesection\quad%
%   \sectiontitle]{\thesection\quad\sectiontitle}{}{%
%   $\cdot$~\thepage~$\cdot$}
%   \setfoot{}{}{}\headrule}
% \pagestyle{main}
% \renewpagestyle{plain}{\sethead{}{}{}\setfoot{}{}{}}
\pagestyle{plain}

\usepackage[top=1in,bottom=1in,left=1.25in,right=1.25in]{geometry} % 设置页边距

\setlength{\belowcaptionskip}{1em} % 设置caption之后的距离

% XeTeX logo
\def\XeTeX{\leavevmode
\setbox0=\hbox{X\lower.5ex\hbox{\kern-.15em\reflectbox{E}}\kern-.1667em
\TeX}%
\dp0=0pt\ht0=0pt\box0}

% For LaN
\newcommand{\LaN}{L{\scriptsize\hspace{-0.47em}\raisebox{0.23em}{A}}\hspace{-0.1em}N}

\begin{document}

\maketitle

\tableofcontents
\newpage

\end{document}

另外推荐下好用的LaTeX, XeTeX入门文档:

  1. The (Not So) Short Introduction to LaTeX2e, 一个比较全面的文档, 是一个老外写的, CTeX论坛翻译的在这里下载, 版本相对老一点. 我刚开始看的就是这个, 觉得还是要边看边动手, 而且要勤动手, 毕竟说全面, 也只是相对下面两个文档的, 对于初学者来说, 里面很多讲得也不是很详细的, 毕竟这些都是比较短小的文档. 因为是老外写的, 所以看完以后你还是不会知道怎样在文档中输出中文.

  2. LaTeX Notes, 清华的一个老师写的LaTeX笔记, 比较务实地将经常用到的命令都讲了出来, 而且内容整体上比上一个新, 所以上一个主要是用来掌握基础, 看完你基本上可以写一个格式和这个PDF差不多的文章了. 最后还专门讲了一下中文化的一些内容, 不过现在用XeTeX了, 也基本上用不上了, 回顾下历史也是不错的.
    P.S. 文中古诗无数, 附精美照片一张.

  3. XeTeX/LaTeX中文排版之胡言乱语, 这个作为了我的XeTeX入门教程, 其实XeTeX的主要学习的地方还是在导言区. 这是一个很短小的文档, 总共只有7页, 对于提高排版质量有一定用处.