7

問題

VerbatimOut「fancyvrb」パッケージの は、UTF-8 文字ではうまく機能しません。

最小限の実例:

\documentclass{minimal}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fancyvrb}

\begin{document}
\begin{VerbatimOut}{\jobname.test}
é
\end{VerbatimOut}

\input{\jobname.test}
\end{document}

エラーメッセージ

を使用してコンパイルするpdflatex miniと、エラーが発生します

の使用をスキャン中にファイルが終了し\UTFviii@three@octetsました。

上記の唯一の発生がé別のものに置き換えられると、別のエラーが発生しé */ます。

パッケージ inputenc エラー: Unicode 文字\u8:###が LaTeX で使用するように設定されていません。

– この場合、LaTeX はマルチバイト UTF-8 文字の読み取りに成功しますが、それをどう処理すればよいかわかりません (つまり、文字が間違っている) ことを示しています。

実際、生成された.testファイルを手動で開くと、文字が含まれていますéが、Latin-1 エンコーディングでは!

証明: 16 進エディタでファイルを開くと、次のようになります。

  • 元のファイル: C3 A9(UTF-8 の LATIN SMALL LETTER E WITH ACUTE に対応)
  • 書き込みファイル: E9( éLatin-1 の に対応)

質問

VerbatimOut正しく設定するには?

filecontents*(「filecontents」から)それが機能することを示しています。残念ながら、どちらのコードも理解できないので、filecontents から手動でロジックを複製して fancyvrb のコードを修正することはできません。

前者は a 内で機能しませんが、後者は機能するため、filecontents*代わりに使用することもできません。VerbatimOut\newenvironment

(ちなみに、バニラVerbatimではなく、期待どおりに動作します。逐語的な入力を読み取るときではなくVerbatimOut、ファイルを書き込むときにエラーが発生するようです)

4

5 に答える 5

4

Verbatim で記号とアクセントを書くことが最終目標ですか? 次のようにできるからです。

\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{Verbatim}[commandchars=\\\{\}]
\'{e} \~{e} \`{e} \^{e}
\end{Verbatim}
\end{document}

commandchars オプションを使用すると、\ { }文字を通常どおりに機能させることができます。

ソース: http://ctan.mirror.garr.it/mirrors/CTAN/macros/latex/contrib/fancyvrb/fancyvrb.pdf

于 2010-01-25T15:06:08.763 に答える
3

これはまだ修正されていませんか?もう一度見てみましょう。あなたは正確に何を望みますか:あなたのパッケージはVerbatimOutを使用するために、またはそれがそれを妨害しないために?

テスト

TexLive2009のXelatexは正常にコンパイルされます。pdflatex付き、バージョン

This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009)

私はあなたが得たよりもかなり有用なエラーメッセージであるエラーメッセージを受け取ります:


! Argument of \UTFviii@three@octets has an extra }.
 
                \par 
l.8 é

? i \makeatletter\show\UTFviii@three@octets
! Undefined control sequence.
\GenericError  ...                                
                                                    #4  \errhelp \@err@     ...
l.8 é

私が大げさな推測をするとしたら、pdftexを使用したinputencは、pdftexプリミティブを使用して、文字テーブルのいくつかの厄介な保存と復元を行い、どこかのテーブルでめったに間違いがないということです。

おそらく関連している

2003年からずっとpdf-texメーリングリストアーカイブにVladimirVolovichによる投稿があり、inputencとfancyvrbの競合について説明し、「問題を解決する」ためのパッチを投稿しています。誰が知っている、多分彼は同じ問題に直面したのだろうか?彼にメールする価値があるかもしれません。

于 2010-01-26T10:34:47.860 に答える
2

XeTeXの Unicode サポートははるかに優れています。次の実行では、出力 PDF と出力 PDF のxelatex両方で「é」が生成され\jobname.testます。

\documentclass{minimal}
\usepackage{fontspec}
\tracingonline=1
\usepackage{fancyvrb}

\begin{document}
\begin{VerbatimOut}{\jobname.test}
é
\end{VerbatimOut}

\input{\jobname.test}
\end{document}

fontspecUnicode をサポートする Latin Modern フォントを読み込みます。標準の TeX Computer Modern フォントには、Unicode サポート用の適切なテーブルがありません。

現在のフォントにグリフがない文字を使用すると、デフォルトで XeTeX は PDF に空白を書き込み、ログに警告を出力しますが、ターミナルには出力しません。\tracingonline=1端末に警告を出力します。

于 2010-01-26T17:48:45.380 に答える
2

http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.LiterateAgdaでは、使用することをお勧めします

\usepackage{ucs}
\usepackage[utf8x]{inputenc}

前文で。ユニコードをそのままの環境に挿入するために、これをうまく使用しました。

于 2011-06-30T15:23:00.940 に答える