最近在处理orgmode下导出代码的设置。基本上有两种路线:1. listings环境。2.Verbatim结合fancyvrb环境。 我写了一个测试文件。现在,启用(setq org-latex-listings t) 选项后,基本上是#+begin_src language … #end_src的环境都可以用一个统一格式的lstlisting环境设置。如果需要对listings环境进行特殊设置,需要使用#+attr_latex: :options …。
对于非代码类或者非标准编程语言的部分,我的需求是直接输出内容(如传统的verbatim环境,但希望能加一个框,偶尔需要编号),因此同时设置了fancyvrb的环境。注意的是,在orgmode中,#+begin_verbatim 与 #+begin_Verbatim (V大写)是不同的。前者是org-mode中begin_example 和begin_src的初始格式化样式。
现在基本能够分别使用Verbatim环境和lstlisting环境设置非标准代码和标准代码,但是在使用Verbatim环境时,遇到一个问题:
当Verbatim环境中出现特殊符号如’#’ '$‘时,会导出带有反斜杠的符号,与初衷原文导出不符。出现’\'时则会出现$backslash . 请问那位能指点一下。另外,现在的配置下,需要使用special block来指定Verbatim 及lstlisting环境。原来的begin_example基本上不会被使用。如何制定针对begin_example导出latex的\begin{Verbatim}[options] 环境而不是\begin{verbatim}环境。
另外,**如何实现如begin_src、begin_example的快速补全(<s Tab、<e Tab)相同的补全功能?**如 <l Tab 扩展为: #+begin_lstlisting …#+end_lstlisting. 我知道YASnippet设置一下是可以通过C-c k补全的,我想问问tab补全怎么做?
还有一个问题,当前lstlisting环境中,自动换行最多只能换一行,如果太长的话,会在第二行一直延伸不会继续换行,如何改进这个设置?
测试org文件如下:
#+TITLE: test
#+AUTHOR: shangpeng
#+LATEX_CLASS: cn-article
* 测试
** listings
如下:
#+begin_src fortran
program main
implicit none
print*,"hello, world!" ! 中文提示号是都发局发生地方酒窝儿积分拉开手机费;矮灵祭反而就 asdfkj;wlejf f 玩儿六块腹肌范德萨会计法wae afjew 玩儿就晚了就
end program main
#+end_src
另一个listing。如何使用两种不同的设置?
#+attr_latex: :options frame=single,numbers=none,tabsize=2,columns=fixed,framexleftmargin=2mm,backgroundcolor=\color{black!10}
#+begin_src fortran
program main
implicit none
print*,"hello, world!" ! 中文提示号是都发局发生地方酒窝儿积分拉开手机费;矮灵祭反而就 asdfkj;wlejf f 玩儿六块腹肌范德萨会计法wae afjew 玩儿就晚了就
end program main
#+end_src
** fancyvrb
#+begin_Verbatim
第一句
第二句
。。。
啥啊
#4
#+end_Verbatim
新的Verbatim环境
#+attr_latex: :options [numbers=none]
#+begin_Verbatim
第一句
第二句
。。。
啥啊
#4
#+end_Verbatim
~
其输出为:
其内置的配置内容为:
;; latex export class
(add-to-list 'org-latex-classes
'("cn-article"
"\\documentclass[10pt,a4paper]{article}
\\usepackage{graphicx}
\\usepackage[dvipsnames]{xcolor}
\\usepackage{xeCJK}
\\usepackage{fontspec}\\setmainfont{Times New Roman} \\setsansfont{Times New Roman}\\setmonofont{DejaVu Sans Mono}
\\setCJKmainfont[BoldFont={仓耳今楷01简繁 W05},ItalicFont={楷体}]{仓耳今楷01简繁 W03}
\\usepackage{lmodern}
\\usepackage{verbatim}
\\usepackage{fixltx2e}
\\usepackage{longtable}
\\usepackage{float}
\\usepackage{tikz}
\\usepackage{wrapfig}
\\usepackage{soul}
\\usepackage{textcomp}
\\usepackage{listings}
\\usepackage{geometry}
\\usepackage{algorithm}
\\usepackage{algorithmic}
\\usepackage{marvosym}
\\usepackage{wasysym}
\\usepackage{latexsym}
\\usepackage{natbib}
\\usepackage{fancyhdr}
\\usepackage[xetex,colorlinks=true,CJKbookmarks=true,
linkcolor=blue,
urlcolor=blue,
menucolor=blue]{hyperref}
\\usepackage{fontspec,xunicode,xltxtra}
\\hypersetup{unicode=true}
\\geometry{a4paper, textwidth=6.5in, textheight=10in,
marginparsep=7pt, marginparwidth=.6in}
\\definecolor{foreground}{RGB}{220,220,204}%浅灰
%\\definecolor{background}{RGB}{62,62,62}%浅黑
\\definecolor{background}{RGB}{255,248,220}%淡黄
\\definecolor{preprocess}{RGB}{250,187,249}%浅紫
\\definecolor{var}{RGB}{239,224,174}%浅肉色
\\definecolor{string}{RGB}{154,150,230}%浅紫色
\\definecolor{type}{RGB}{225,225,116}%浅黄
\\definecolor{function}{RGB}{140,206,211}%浅天蓝
\\definecolor{keyword}{RGB}{239,224,174}%浅肉色
\\definecolor{comment}{RGB}{180,98,4}%深褐色
\\definecolor{doc}{RGB}{175,215,175}%浅铅绿
\\definecolor{comdil}{RGB}{111,128,111}%深灰
\\definecolor{constant}{RGB}{220,162,170}%粉红
\\definecolor{buildin}{RGB}{127,159,127}%深铅绿
\\usepackage{type1cm}
\\newcommand{\\yihao}{\\fontsize{26pt}{36pt}\\selectfont} % 一号, 1.4 倍行距
\\newcommand{\\erhao}{\\fontsize{22pt}{28pt}\\selectfont} % 二号, 1.25倍行距
\\newcommand{\\xiaoer}{\\fontsize{18pt}{18pt}\\selectfont} % 小二, 单倍行距
\\newcommand{\\sanhao}{\\fontsize{16pt}{24pt}\\selectfont} % 三号, 1.5倍行距
\\newcommand{\\xiaosan}{\\fontsize{15pt}{22pt}\\selectfont} % 小三, 1.5倍行距
\\newcommand{\\sihao}{\\fontsize{14pt}{21pt}\\selectfont} % 四号, 1.5 倍行距
\\newcommand{\\banxiaosi}{\\fontsize{13pt}{19.5pt}\\selectfont} % 半小四, 1.5倍行距
\\newcommand{\\xiaosi}{\\fontsize{12pt}{18pt}\\selectfont} % 小四, 1.5倍行距
\\newcommand{\\dawuhao}{\\fontsize{11pt}{11pt}\\selectfont} % 大五号, 单倍行距
\\newcommand{\\wuhao}{\\fontsize{10.5pt}{15.75pt}\\selectfont} % 五号, 单倍行距
\\setCJKfamilyfont{songti}{SimSun}
\\setCJKfamilyfont{kaiti}{KaiTi}
\\setCJKfamilyfont{heiti}{SimHei}
\\setCJKfamilyfont{fangsong}{FangSong}
\\newcommand{\\song}{\\CJKfamily{songti}}
\\newcommand{\\fs}{\\CJKfamily{fangsong}} % 仿宋体
\\newcommand{\\kai}{\\CJKfamily{kaiti}} % 楷体
\\newcommand{\\hei}{\\CJKfamily{heiti}} % 黑体
\\fontfamily{Dejavu Sans Mono}
\\newcommand{\\mono}{\\setmainfont{DejaVu Sans Mono}} %英文字体命令
\\usepackage{fancyvrb}
\\fvset{numbers=left,frame=lines,framerule=1pt}
\\punctstyle{kaiming}
\\title{}
\\fancyfoot[C]{\\bfseries\\thepage}
\\chead{\\MakeUppercase\\sectionmark}
\\pagestyle{fancy}
\\tolerance=1000
\\usepackage{indentfirst}\\setlength{\\parindent}{2em}
\\renewcommand{\\contentsname}{目录} \\renewcommand{\\listfigurename}{插图目录} \\renewcommand{\\listtablename}{表格目录} \\renewcommand{\\refname}{参考文献} \\renewcommand{\\abstractname}{摘要} \\renewcommand{\\indexname}{索引} \\renewcommand{\\tablename}{表} \\renewcommand{\\figurename}{图}
[NO-DEFAULT-PACKAGES]
[NO-PACKAGES]"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
;; 设置默认编译动作命令
;;org-export latex
(setq org-alphabetical-lists t)
(setq org-latex-pdf-process
'("xelatex -interaction nonstopmode %f"
"bibtex %b"
"xelatex -interaction nonstopmode %f"
"xelatex -interaction nonstopmode %f"
"rm -fr %b.out %b.log %b.tex %b.brf %b.bbl auto"
))
(setq org-latex-compiler "xelatex")
;; 使用Listings宏包格式化源代码(只是把代码框用listing环境框起来,还需要额外的设置)
;(setq org-export-latex-listings t)
(setq org-latex-listings t)
;; Options for \lset command(reference to listing Manual)
;(setq org-export-latex-listings-options
(setq org-latex-listings-options
'(
("basicstyle" "\\color{foreground}\\small\\mono") ; 源代码字体样式
("keywordstyle" "\\color{function}\\bfseries\\small\\mono") ; 关键词字体样式
("identifierstyle" "\\color{doc}\\small\\mono")
("commentstyle" "\\color{comment}\\small\\itshape") ; 批注样式
("stringstyle" "\\color{string}\\small") ; 字符串样式
("showstringspaces" "false") ; 字符串空格显示
("numbers" "left") ; 行号显示
("numberstyle" "\\color{preprocess}") ; 行号样式
("stepnumber" "1") ; 行号递增
("backgroundcolor" "\\color{background}") ; 代码框背景色
("tabsize" "4") ; TAB等效空格数
("captionpos" "t") ; 标题位置 top or buttom(t|b)
("breaklines" "true") ; 自动断行
("breakatwhitespace" "true") ; 只在空格分行
("showspaces" "false") ; 显示空格
("columns" "flexible") ; 列样式
("frame" "shadowbox") ; 代码框:阴影盒
("frameround" "tttt") ; 代码框: 圆角
("framesep" "0pt")
("framerule" "0pt")
("rulecolor" "\\color{background}")
("fillcolor" "\\color{white}")
("rulesepcolor" "\\color{comdil}")
("framexleftmargin" "10mm")
))