日知录

学而不思则殆

关于TeX/LaTeX/XeLaTeX的一些使用技巧

Code Snippets Processing

There is a package called listings, it is a very handy package for code snippets processing, include highlighting, formatting, numbering, etc.

The commonly used settings by myself:

\usepackage{listings}
\usepackage{color}
\usepackage{textcomp}

\lstset{
  language=python,  % language, c, java, etc.
  frame=shadowbox,  % border and its style
  framexleftmargin=7mm,
  backgroundcolor=\color[rgb]{0.9,0.9,0.9}, rulesepcolor=\color{black},
  showspaces=false, showtabs=false, tabsize=4, showstringspaces=false,
  numberstyle=\small, % numbering and its style
  numbers=left,
  basicstyle=\ttfamily, % fonts and style
  stringstyle=\ttfamily\color[rgb]{0.627,0.126,0.941},
  keywordstyle=\bfseries\ttfamily\color[rgb]{0,0,1},
  commentstyle=\color[rgb]{0.133,0.545,0.133},
  identifierstyle=\ttfamily,
  xleftmargin=1.2cm, xrightmargin=0.5cm,
  lineskip=0.2em,
  upquote=true,    % quote style, for ' and "
  breaklines=true, % automatically break long lines
  %% stepnumber=1,
  %% numbersep=10pt,
  %% prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
  %% breakatwhitespace=false,
  %% aboveskip={1.5\baselineskip},
  %% columns=fixed,
  %% extendedchars=true,
}

A code snippet example:

\begin{lstlisting}
>>> import django
>>> print django.get_version()
1.5
>>>
\end{lstlisting}

Network resource for listings:

  1. http://www.tjansson.dk/?p=419
  2. ftp://ftp.tex.ac.uk/tex-archive/macros/latex/contrib/listings/listings.pdf

Remove Border of ToC/Links/Footnotes

There is a discussion here.

The root cause is that the style is the default style of package hyperref, I really don't know why hyperref uses such an ugly style as its default style…

Many solutions are mentioned in above link, I prefer this one:

\usepackage{hyperref}
\hypersetup{
    colorlinks,
    citecolor=black,
    filecolor=black,
    linkcolor=black,
    urlcolor=black
}

This can not only remove the ugly border, but also customize the link color.

Make A Title Multi Lines

Use a line break operator(double backslash) can achieve this:

\documentclass{article}
\begin{document}
\title{First line of title \\
Second line of title}\maketitle
\end{document}

Reference: http://tex.stackexchange.com/questions/56222/how-to-make-a-title-of-two-or-more-lines

Error of Package hyperref With XeLaTeX

When compiling with xelatex, an error occurs:

mktexmf: empty or non-existent rootfile! kpathsea: Running mktexmf pzdr.mf
The command name is D:\TexLive\bin\win32\mktexmf
Cannot find pzdr.mf.

But it's strange that the error does not affect output, the pdf file is created normally!

However, the error is annoying, after searching the web, find a solution here: http://www.ktug.or.kr/xe/index.php?document_srl=161963

This page is in Korean, but it does not affect too much, from the first reply, I find the solution:

tlmgr install zapfding

So, after package zapfding installed, the error is gone.

Another useful link: http://tex.stackexchange.com/questions/50596/latex-font-error-i-cant-find-file-pzdr

Error of Package xunicode

The error is as following:

/XXX/XXX/xunicode.sty
! I can't find file `t3enc.def'.

This is because xunicode requires package tipa (t3enc.def is a file of tipa).

So, install the missing package will solve the issue:

tlmgr install tipa

Reference: http://tex.stackexchange.com/questions/31341/cant-use-fontspec-with-xelatex-after-tlmgr-update

Use Different Font For Different Language

XeLaTeX allows usage of system fonts, the following code snippet can make ASCII characters use font Segoe UI, monospace font is Consolas, but Chinese characters will use font Microsoft YaHei:

\usepackage{fontspec}
\usepackage{xeCJK}

\setmainfont[ItalicFont={* Italic},BoldFont={* Bold},BoldItalicFont={* Bold Italic}]{Segoe UI}
\setmonofont[ItalicFont={* Italic},BoldFont={* Bold},BoldItalicFont={* Bold Italic}]{Consolas}
\setCJKmainfont{Microsoft YaHei}

Reference: http://tex.stackexchange.com/questions/21046/change-xetex-fonts-automatically-depending-on-unicode-blocks

Error with Code Snippets in Beamer

A typical beamer frame may looks like this:

\begin{frame}
\frametitle{CreateThread Function}

\begin{lstlisting}
Code Snippet 1
\end{lstlisting}

\begin{verbatim}
Code Snippet 2
\end{verbatim}

\end{frame}

No matter using listings package or begin{verbatim} to format the code, there will always be error:

Paragraph ended before \@xverbatim was complete \end{frame}  %% generated by \begin{verbatim} command
Paragraph ended before \lst@next was complete \end{frame}    %% generated by listings package

Add an optional parameter to begin{frame} will fix this issue:

\begin{frame}[fragile]
...

Reference: http://www.purplecow.org/index.php/Using_verbatim_text_in_a_latex_beamer_presentation

Comments

使用Disqus评论 使用多说评论
comments powered by Disqus