我用的Win7,无SP,CTeX 2.9,R 2.13.1,在最开始的时候尝试使用您blog上的模版(http://yihui.name/cn/2010/02/misc-issues-in-latex-lyx-r-sweave-pgfsweave/)来编译,但一直不成功,
出错的代码如下:
<br />
Creating temporary TikZ metrics dictionary at:<br />
C:\Users\彭浩\AppData\Local\Temp\Rtmp783gSX/tikzMetricsDictionary<br />
Error in createLockFile(lockname) : cannot create lock file<br />
错误于driver$runcode(drobj, chunk, chunkopts) :<br />
Error in createLockFile(lockname) : cannot create lock file<br />
在尝试了多次后,发现可能是TikZ临时写目录中有中文字符导致了这个问题。即使使用setwd()将工作目录切换到一个纯英文名称的路径下,问题仍然存在。于是创建一个全英文用户名称的帐号来编译,pdfSweave编译纯英文编码的文档能够偶尔通过。</p>
1. 我目录是通过右键R图标的方式在相应的窗口中设置了当前的工作上当,那么Rprofile.site放到什么目录下,
tikzDevice版本:0.6.1
PGF版本:2.10
MikTeX:2.9.3962
pdfLaTeX与XeLaTeX路径上没有文字符(好像CTeX套装的中文问题还比较令人满意。)
用Sweave("foo.Rnw")编译文档(www.stat.umn.edu/~charlie/Sweave/foo.Rnw)成功,这个文档其实觉得很奇怪,自身是ANSI编译,但代码中又有一行\usepackage[utf8]{inputenc},这让我很弄不明白这一条语句空间有什么作用。
2. 令人高兴的是xelatex foo成功,比较遗憾的是从生成的pdf文件的效果来看,R中图片的效果并没有LaTeX的外观。
于是尝试使用pgfSweave编译文件:pgfSweave("foo.Rnw"),看提示似乎找不到Sweave.sty文件,明明自己已经安装并且刷新了CTeX的数据库,没办法只好在\usepackage[utf8]{inputenc}一句前手工添加\usepackage{Sweave},这一次又提示pgf相关的错误,无奈下又在后面添加语句\usepackge{tikz},终于可以成功的用pgfSweave编译一个英文文档出来。并且公式和图片也改成了LaTeX的效果。
3. 一个小问题是
<br />
LaTeX Font Warning: Font shape `T1/aett/bx/n' undefined<br />
(Font) using `T1/aett/m/n' instead on input line 421.<br />
这个问题暂时还想不到该怎么解决,不过感觉无伤大雅。</p>
第3个问题是我如何直接让RGui(原谅我暂时还没有想法转移到的GUI中)直接在pgfSweave()时使用的是XeLaTeX而不是pdfLaTeX,因为自己现在的所有工作已经全部转移到XeLaTeX中。
============================================================================
转移到中文来:
第一条就是:
<br />
pgfSweave("PHoward.Rnw",pdf=T)<br />
Writing to file PHoward.tex<br />
Processing code chunks with options ...<br />
1 : echo highlight term verbatim (label=setup)<br />
2 : echo highlight term verbatim tikz (label=rnorm)</p>
<p>错误: chunk 2 (label = rnorm)<br />
Error in parse(text = chunk) : 3:31: 意外的','<br />
2: NA<br />
3: xlab='$\\alpha + \\beta$',<br />
^<br />
此外: 警告信息:<br />
‘PHoward.Rnw’ has unknown encoding: assuming Latin-1<br />
</p>
再联想到另一条出错:
<br />
! Package fontenc Error: Encoding file `utf8enc.def' not found.<br />
(fontenc) You might have misspelt the name of the encoding.<br />
</p>
看来是编码出了问题,这个中文文档我用的是utf-8不带bom。
我怀疑和\usepackage[T1]{fontenc} 这条语句有关。改成\usepackage[utf8]{fontenc}也没有用。
实际上出错的位置就是中文刚好在正文出现的位置。这个人`utf8enc.def'我搜索过CTeX目录,也确实没有。
很奇怪现在的ctex宏包其实已经很先进,自己的模板中也早就不再直接使用fontenc宏包。
4. \usepackage[T1]{fontenc}这一句做了什么工作?
此外我也打开了pgfSweave生成的TikZ文档,里面的正文标明自己是utf-8编码,实际上这个文档却是ANSI编码,这也非常令人费解。
http://bbs.ctex.org/viewthread.php?tid=62678 这个帖子里面找到了fontenc的问题,但我用yihui的那个小例子时,还并没有涉及到帖子中所谓的xeCJk和字体设置。当然,虽然不直接用xeCJK,但CTeX最新宏包其实默认会用这个,而且将业也会要修改字体。
5. 您的小模板中的两部分代码让我奇怪:
<br />
\usepackage{CJKutf8} </p>
<p>\begin{CJK}{UTF8}{}%<br />
</p>
目前的CTeX已经非常好用,几乎只要\documentclass{ctexart}就可以完美支持中文,根本不需要上面这两个语句的支持。
综上:
1. 我目录是通过右键R图标的方式在相应的窗口中设置了当前的工作上当,那么Rprofile.site放到什么目录下;
2. 一个小问题是
<br />
LaTeX Font Warning: Font shape `T1/aett/bx/n' undefined<br />
(Font) using `T1/aett/m/n' instead on input line 421.<br />
这个问题暂时还想不到该怎么解决?(这个并不特别关心。)</p>
3. \usepackage[T1]{fontenc}这一句做了什么工作?
3.1 ‘PHoward.Rnw’ has unknown encoding: assuming Latin-1,这种认不出编码的问题是怎么回事。
4. 您的小模板中的两部分代码让我奇怪:
<br />
\usepackage{CJKutf8} </p>
<p>\begin{CJK}{UTF8}{}%<br />
更简洁的能工作的模板更怎么做到?</p>
5. 我比较想弄明白缓存目录是怎么设置的,setCacheDir("cache")中的cache是当前工作目录下自己创建么?是否需要每次pgfSweave都指定?
6. pdf.options(family="GB1")与utf-8之间有关联或者冲突吗?
7. options(encoding="UTF-8")这样的语句一般在什么样的文档中?
8. 怎么让pgfSweave直接调用XeLaTeX而不是pdfLaTeX?(我用的是Rgui,最土的那个。)
当然,最需要解决的肯定是中文问题本身哈。(写完自己的XeLaTeX模板后,已经没有勇气再转到LyX上实现一次。)
谢谢版主。