Pages

Monday, January 1, 2007

歌詞加上 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 歌曲)


This article was originally posted on this site.

No comments:

Post a Comment