Archive for the 'TeX' Category

Using UTF-8 strings in listings

裝完 TeXLive 又開始試著把一些筆記轉成 TeX 文件。不過剛剛玩了一下,發現在 utf8 文稿中使用 listings 會爛掉,以前正常的文件現在也會出問題了,搞了一晚還搞不定。最後找到一封信有提到解決辦法,只要加上一行設定:

\lstset{extendedchars=false}

加上後果然正常多了。但後面還有一封信指出這樣子產生的 dvi 檔有問題,不過原發問者是在法文環境,而我目前還沒有遇到中文文件爛掉的情況,再玩一陣子看看吧。

TeXLive 2007

TeXLive 2007 抓下來已經是上個月的事了,可是因為一些雜事所以一直沒動手。今天剛好趁著颱風假把 iso 燒出來玩。安裝 TeXLive 事實上是很簡單的,但要注意的是,TeXLive 有分 DVD 和 VCD,如果不想安裝在硬碟,而是直接取用光碟內的檔案的話,只能下載 DVD iso。我目前是選擇不安裝到硬碟,好為我可憐的小容量硬碟多搾出一點空間。 Read more »

header, footer

要在 LaTeX 文件中產生精美的 header 與 footer 可以透過 fancyhdr 這個 package 來達成。以下是一個簡單的範例:

\usepackage{fancyheadings}
\pagestyle{fancy}
\fancyheadoffset{0.3in}
\fancyfootoffset{-2.0in}
\renewcommand{\headrulewidth}{1.3pt}
\renewcommand{\footrulewidth}{0.5pt}
\lhead{\slshape \rightmark}
\chead{}
\rhead{\thepage}
\lfoot{}
\cfoot{\slshape \leftmark}
\rfoot{}

另外還有一些特殊的功能請參考 fancyhdr.pdf

歌詞加上 LaTeX 的斷行記號

自從幾年前改用 LaTeX 撰寫筆記後,我將大部份的文書編輯需求都慢慢移植過去,連歌詞的記錄也是用 LaTeX 產出精美的 PDF 文件。不過比較麻煩的是歌詞通常都是一段一段的,我不習慣通通串成一行,所以從網路上找到的歌詞都要手動加上斷行,不然產生出來的 PDF 內容會全部擠在一起。

其實也不是沒想過寫個程式來處理,不過我有時候會在 Windows 上作業,還要弄個跨平台的程式頗麻煩 (就算是 script 還是得裝 interpreter 阿…)。剛剛有點受不了了,就研究一下能不能直接在 vim 裡處理掉。

vim 雖然也有很強的文字處理功能,不過因為它的 regex 跟我不太熟 (我比較熟 perl 的…),所以一直不太想用它來處理文字。剛剛翻了一下 help 終於找到我要的東西了,我的需求很簡單:在每個段落中的最後一行除外,每一行的行尾都加上 \\,例如

line1
line2
line3

變成

line1\\
line2\\
line3

要用 vim 在行尾加個東西是不難,不過一直不知道怎麼在 vim 中做判斷,不過知道語法後就很容易了,我可以直接把 perl 的語法轉成 vim 的語法使用:

:%s/\(^[^\\]\+\)\n\([^\r]\)\@=/\1\\\\\r/

這個命令有略過開頭是 \ 的 LaTex 指令,如果不需要的話修改一下就可以了。

其實簡單一點的話也可以把歌詞丟進 verbatim 環境,不過有時候我需要在日文歌詞加上 ruby annotation,一丟進 verbatim 就破功了….(最主要還是為了日文歌詞,因為我幾乎只聽古典樂和 ACG 歌曲)

txt2tags 輸出 LaTeX 檔測試

之前把舊筆記整理了一下,發布了一篇Windows 下的 coLinux 環境設置。在還不會使用 LaTeX 前都是純文字格式的筆記,剛好前陣子也試用了一下 txt2tags 覺得還不錯,因此前一篇文章其實是用 txt2tags 轉成 HTML 後,再透過以前寫的小程式發布到 blog 上。

Read more »

安裝日文字型

剛剛把日文字型裝上 我用的是 CyberCJK 字型
果然本來看不到的字都出現了

我自己安裝字型也不是每次都可以成功XD 趕快記錄一下
因為我只要產生 pdf,所以就生出 tfm 配合 ttf 使用就好
不過不曉得怎麼做才能只更新 local cid-x.map
所以只好用 root 裝上去了@@

#!/bin/sh
# download font
wget ftp://ftp.netscape.com/pub/communicator/extras/fonts/windows/CyberCJK.ZIP
# unpack
7z x CyberCJK.ZIP
# download mktfm.sh
wget http://edt1023.sayya.org/tex/mycjk/mktfm.sh
# generate tfm
./mktfm.sh Cybercjk.ttf cybercjk Unicode
# install
[ -d "$HOME/texmf/tex/latex/CJK/UTF8" ] || \
mkdir "$HOME/texmf/tex/latex/CJK/UTF8"
cp c70cybercjk.fd "$HOME/texmf/tex/latex/CJK/UTF8"

[ -d "$HOME/texmf/fonts/tfm/CJK/cybercjk" ] || \
mkdir -p "$HOME/texmf/fonts/tfm/CJK/cybercjk"
cp *.tfm "$HOME/texmf/fonts/tfm/CJK/cybercjk"

[ -d "$HOME/texmf/fonts/enc/CJK/cybercjk" ] || \
mkdir -p "$HOME/texmf/fonts/enc/CJK/cybercjk"
cp *.enc "$HOME/texmf/fonts/enc/CJK/cybercjk"

# append cid-x.map for dvipdfmx
sudo cat cid-x.map.append >> /etc/texmf/dvipdfm/cid-x.map

# setup TTF
sudo cp Cybercjk.ttf /usr/share/fonts/truetype
cd /usr/share/texmf/fonts/truetype
sudo ln -s /usr/share/fonts/truetype/Cybercjk.ttf

裝完記得跑一下 texhash
不跑 fc-cache 不曉得會不會有影響 (我是有執行啦)

測試文件

\documentclass[12pt,a4paper]{article}
\usepackage{CJK}

\begin{document}
\begin{CJK}{UTF8}{cybercjk}

% 輸入一些 unicode 日文

\end{CJK}
\end{document}

這樣產生出來的 pdf 檔還比用了 nsung 字型的小很多
不過我會同時用到中文跟日文 所以還要再加點東西
定義兩個新指令

\newcommand{\chtfont}{\CJKfamily{nsung}}
\newcommand{\jpfont}{\CJKfamily{cybercjk}}

要用中文字的地方就先下 \chtfont
要用日文字的地方就先下 \jpfont

這樣使用起來就很方便了
不過這個字型比起 nsung 還要糊一點@@
有空再試試其他字型吧 目前能用就好

產生好的字型檔放在這 (ttf/tfm)
[Link]

twocolumn 的欄寬

剛一直在一堆  cls  sty  裡找改欄寬的方法
沒想到只要直接調整  \textwidth  就可以了XD
以  a4  大小的預設配置來講 文字區域實在太小了
旁邊留了很大一塊邊界不曉得要幹嘛
不過只調這個當然不夠 要配合一下其他版面參數
詳細的參數可以參考這張圖
[Link]

根據  latex123  裡的整理

\paperwidth    紙張的寬度
\paperheight  紙張的高度
\textwidth 內文(body)的寬度
\textheight    內文(body)的高度
\headheight    頁眉(header)長度
\headsep  頁眉與內文間的距離
\footskip   內文底至頁足底之距離
\topmargin 頁眉上方的空白
\marginparwidth    邊註的寬度
\marginparsep   邊註與內文的距離
\marginparpush 兩邊註間距
\oddsidemargin 內文左邊的空白大小
\hoffset  微調版面在實際紙張的左右位置
\voffset  微調版面在實際紙張的上下位置

在  latex  要調整版面配置真的很麻煩 但只要調好一次就可以一直沿用
像  MS-Word  那種方式我反而不會調 版面大小還好 段落就不行了 怎麼調怎麼亂@@

geometry  套件我還沒用過 有機會再來試試
(之前調好的參數 不太想再亂動@@)

日文處理

雖然我不懂日文 不過偶爾也是需要記錄一些日文資訊
反正有了  unicode  字型 要處理起來就很方便
目前是用  latex  +  cjk 如果要用  Omega  的話有找到一篇文件

Typesetting  Japanese  with  Omega
[Link]

上面的步驟很詳細 不過我大概要等  latex  爛掉才會想去試吧@@
光是  latex  字型就很難搞了 暫時不想再花時間在  Omega  上

目前試了幾篇文章都沒問題 另外就是想到在漢字上標上假名的做法
找了一些資料 原來  cjk  裡有提供  ruby.sty  可以用
這個東西叫  ruby  annotation 再找下去還發現這個東西
[Link]

不過  ruby  的預設值不太好 字太小了 而且也黏在一起
看了一下原始碼只提供六個參數可以調整 跟字體有關的有兩個
\rubysize  和  \rubysep

我目前的設定是這樣

\renewcommand{\rubysize}{0.7}
\renewcommand{\rubysep}{-0.5ex}

不過我又想到 應該可以自由切換要不要顯示  ruby  annotation  吧…
試了一下應該沒什麼問題要關掉的話就在  preamble  加一行

\renewcommand{\ruby}[2]{#1}

不然加了  ruby  後要一個一個去掉也是挺麻煩的…
(用  regex  處理一下應該也可以解決)