將西里爾文字寫入文件

將西里爾文字寫入文件

你能解釋一下,發生了什麼事嗎?

我正在使用最新的 MiKTeX 2.9.6960 64 位元版本(昨天剛安裝)。

我試圖在不使用 inputenc 套件的情況下將一些西里爾文文字寫入單獨的文件:

\documentclass{article}

\begin{document}

\newwrite\testwrite

\immediate\openout\testwrite=testwrite.txt

\immediate\write\testwrite{Ббббббббббббб}

\immediate\closeout\testwrite

\end{document}

但 LaTeX 並沒有告訴我編碼有問題,而是告訴我它的一些內部命令未定義。這是相應日誌檔案的一部分:

! Undefined control sequence.
\GenericError  ...                                
                                                    #4  \errhelp \@err@     ...
l.9 \immediate\write\testwrite{Ббббббббббббб}

? 
! Undefined control sequence.
\GenericError  ...                                
                                                  \let \@err@               ...
l.9 \immediate\write\testwrite{Ббббббббббббб}

? 
! Undefined control sequence.
\GenericError  ...                                
                                                  \@empty \def \MessageBreak...
l.9 \immediate\write\testwrite{Ббббббббббббб}

? 
! Undefined control sequence.
\GenericError  ...                                
                                                     \endgroup 
l.9 \immediate\write\testwrite{Ббббббббббббб}

? 
! Undefined control sequence.
\GenericError  ...                                
                                                    #4  \errhelp \@err@     ...
l.9 \immediate\write\testwrite{Ббббббббббббб}

? 
! Undefined control sequence.
\GenericError  ...                                
                                                  \let \@err@               ...
l.9 \immediate\write\testwrite{Ббббббббббббб}

? 
! Undefined control sequence.
\GenericError  ...                                
                                                  \@empty \def \MessageBreak...
l.9 \immediate\write\testwrite{Ббббббббббббб}

等等。

這是一個錯誤還是發生了什麼事?

感謝您的回答。

答案1

活動字元設定為擴展為排版指令(或表示未設定字元的錯誤訊息),您只想逐字寫入文本,如下所示:

\documentclass{article}

\begin{document}

\newwrite\testwrite

\immediate\openout\testwrite=testwrite.txt

\immediate\write\testwrite{\detokenize{Ббббббббббббб}}

\immediate\closeout\testwrite

\end{document}

答案2

如果您不想使用 inputenc,請添加\UseRawInputEncoding

\UseRawInputEncoding
\documentclass{article}

\begin{document}

\newwrite\testwrite

\immediate\openout\testwrite=testwrite.txt

\immediate\write\testwrite{Ббббббббббббб}

\immediate\closeout\testwrite

\end{document}

相關內容