2

私は英語で LyX ドキュメントを作成しようとしていますが、いくつかの中国語が散在しています。図と分析用に Knitr も必要です。私のインストールはknitrが好きで、中国語が好きです(ここでは「代替」アプローチを使用しています:http://wiki.lyx.org/LyX/Chinese#toc5)が、CJKを含むドキュメントを編むことができません。

テスト ドキュメントには次のテキストがあります (TeX コード ボックス内の Tex):

Hello    
\cntxt{你好吗}

私のユーザー定義のプリアンブルは (LyX wiki から):

\usepackage{CJKutf8}
\usepackage[overlap, CJK]{ruby}
\newenvironment{SChinese}{%
\CJKfamily{gbsn}%
\CJKtilde
\CJKnospace}{}
\newcommand{\cntxt}[1]{\begin{CJK}{UTF8}{}\begin{SChinese}#1\end{SChinese}\end{CJK}}

ドキュメント設定: 私の言語は英語、エンコーディングは utf8 です (これらの他のオプションは何も変更しないようです)。Xie Yihui のサイトで言及されているように、LyX の言語マーキングをオフにしました。

Knitr がロードされ、[PDF (pdflatex)] を表示すると、R に送信するときに問題が発生します。

10:13:40.589: Warning in readLines(input, warn = FALSE) :
10:13:40.597:   invalid input found on input connection 'test-chinese-2.Rnw'

そして、ラテックスは返されるものが好きではありません:

! File ended while scanning use of \cntxt.

漢字を取り出すとエラーが解消されます。中国語を離れ、knitr をアンロードすると、エラーも解消されます。CJK を維持し、knitr をロードしたままにし、ドキュメントを公開する方法について何か提案はありますか?

Lyx はネイティブ Windows 2.0.4、R は 2.15.1、knitr は 0.8 です。Knitr- examplesの034-chinese.Rhtmlの例は完全に機能します。

メッセージウィンドウの出力は次のとおりです。

13:45:45.419: Previewing ...
13:45:45.581: Rscript --verbose --no-save --no-restore "C:/Program Files (x86)/LyX20/Resources/scripts/lyxknitr.R" "C:/Users/Patrick/AppData/Local/Temp/lyx_tmpdir.Hp8472/lyx_tmpbuf2/""test-chinese-2.Rnw" "C:/Users/Patrick/AppData/Local/Temp/lyx_tmpdir.Hp8472/lyx_tmpbuf2/""test-chinese-2.tex" UTF-8 "C:/Users/Patrick/Downloads/"
Running: Rscript --verbose --no-save --no-restore "C:/Program Files (x86)/LyX20/Resources/scripts/lyxknitr.R" "C:/Users/Patrick/AppData/Local/Temp/lyx_tmpdir.Hp8472/lyx_tmpbuf2/""test-chinese-2.Rnw" "C:/Users/Patrick/AppData/Local/Temp/lyx_tmpdir.Hp8472/lyx_tmpbuf2/""test-chinese-2.tex" UTF-8 "C:/Users/Patrick/Downloads/"
13:45:47.202: [1] TRUE
13:45:47.203: [1] TRUE
13:45:47.230: running
13:45:47.237:   'C:\PROGRA~1\R\R-215~1.1\bin\i386\Rterm.exe --slave --no-restore --no-save --no-restore --file=C:/Program Files (x86)/LyX20/Resources/scripts/lyxknitr.R --args C:/Users/Patrick/AppData/Local/Temp/l
13:45:47.247: yx_tmpdir.Hp8472/lyx_tmpbuf2/test-chinese-2.Rnw C:/Users/Patrick/AppData/Local/Temp/lyx_tmpdir.Hp8472/lyx_tmpbuf2/test-chinese-2.tex UTF-8'
13:45:47.252: 
13:45:47.258: Warning in readLines(input, warn = FALSE) :
13:45:47.266:   invalid input found on input connection 'test-chinese-2.Rnw'
13:45:47.802: 
  |                                                                       
  |                                                                 |   0%
  |                                             
13:45:47.813:                           
  |>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>| 100%
13:45:47.820:   ordinary text without R code
13:45:47.826: 
13:45:47.828: 
13:45:47.832: [1] "test-chinese-2.tex"
13:45:47.836: [1] TRUE
13:45:47.837: [1] TRUE
13:45:47.843: 
13:45:47.844: 
13:45:47.848: processing file: test-chinese-2.Rnw
13:45:47.854: output file: C:\Users\Patrick\Downloads\test-chinese-2.tex
13:45:47.860: 
13:45:47.875: pdflatex  "test-chinese-2.tex"
Running: pdflatex  "test-chinese-2.tex" > nul
13:45:48.186: This is pdfTeX, Version 3.1415926-2.3-1.40.12 (MiKTeX 2.9)
13:45:48.215: entering extended mode
13:45:48.219: 
13:45:48.224: (C:\Users\Patrick\AppData\Local\Temp\lyx_tmpdir.Hp8472\lyx_tmpbuf2\test-chinese
13:45:48.229: -2.tex
13:45:48.233: LaTeX2e <2011/06/27>
13:45:48.239: Babel <v3.8m> and hyphenation patterns for english, afrikaans, ancientgreek, ar
13:45:48.247: abic, armenian, assamese, basque, bengali, bokmal, bulgarian, catalan, coptic, 
13:45:48.255: croatian, czech, danish, dutch, esperanto, estonian, farsi, finnish, french, ga
13:45:48.263: lician, german, german-x-2009-06-19, greek, gujarati, hindi, hungarian, iceland
13:45:48.269: ic, indonesian, interlingua, irish, italian, kannada, kurmanji, lao, latin, lat
13:45:48.275: vian, lithuanian, malayalam, marathi, mongolian, mongolianlmc, monogreek, ngerm
13:45:48.280: an, ngerman-x-2009-06-19, nynorsk, oriya, panjabi, pinyin, polish, portuguese, 
13:45:48.285: romanian, russian, sanskrit, serbian, slovak, slovenian, spanish, swedish, swis
13:45:48.291: sgerman, tamil, telugu, turkish, turkmen, ukenglish, ukrainian, uppersorbian, u
13:45:48.296: senglishmax, welsh, loaded.
13:45:48.300: 
13:45:48.638: Error while previewing format: pdf2C:\Users\Vincent\Documents\LyX\source\lyx20x\src\support\Systemcall.cpp(273): Systemcall: 'pdflatex  "test-chinese-2.tex"' finished with exit code 1
4

1 に答える 1

0

これが答えになるかどうかはわかりませんが、SlowLearner の本のページを参考にして、LyX20\Resources\scripts\lyxknitr.R のロケール設定をいじりました。

コードの追加

## add a kludge for locale 
print(Sys.getlocale(category = "LC_CTYPE"))
Sys.setlocale("LC_CTYPE","chinese")

Knit() が私が望んでいたことをする前に。とはいえ、ローマ以外の言語を別の文書に入れたいと思うことは決してありません。

于 2012-10-10T23:52:46.560 に答える