目标:
这是为了考试。我有一个程序,需要通过批处理脚本编译和执行。另一个批处理脚本首先调用该批处理并将输出写入文件.txt
。然后,该文件的内容.txt
应包含在使用 Latex 生成的文档中。
问题: Latex 在构建过程中产生字符编码错误。错误消息:
包
inputenc
错误:使用的键盘字符在输入编码‘utf8’中未定义
生成的文件如下所示:
Ausgabe generiert am 11.05.2013 um 8:28:11,39
************** Skript zur Kompilierung der Source-Dateien **********************
Kompilieren der Sourcedateien zu "Program.exe"
Microsoft (R) Visual C# 2008 Compiler Version 3.5.30729.6400
, für Microsoft (R) .NET Framework Version 3.5
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
Erfolgreiche Kompiliereung
在第 6 行中,德语变音符号 'ü' (ue) 存在问题。后面的 # 字符也存在问题。
LaTeX 配置:
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
代码包含如下内容:
\lstinputlisting[style=tests]{log/log.txt}
奇怪的是,我的文档中到处都是变音符(äöü)等特殊字符,但运行正常。如果我从我的项目中复制一个文件并将其重命名为,则运行正常log.txt
。但如果我在文件系统上创建一个新文件(或使用脚本生成它)并向其中写入一些特殊字符,它就会崩溃。
更多细节: 我使用的是 Windows 8、Texnicenter 和 MikTex。列表样式如下所示:
\lstdefinestyle{tests}{
language=,
basicstyle=\ttfamily,
numbers=none,
breaklines=true,
frame=none,
breakatwhitespace=false,
backgroundcolor=\color{hellgelb},
literate=
{Ö}{{\"O}}1
{Ä}{{\"A}}1
{Ü}{{\"U}}1
{ß}{{\ss}}2
{ü}{{\"u}}1
{ä}{{\"a}}1
{ö}{{\"o}}1
}
我已尝试过:我用 Google 搜索了一下。我尝试在批处理文件中使用所有可能的代码页,例如:1250、1252、850、65000、65001、1200、1201、12000、12001。但毫无效果。
我将非常感谢您的帮助!
编辑 写入输出的批处理:
@echo off
SET log=%~dp0\latex_doku\log\log.txt
SET skripts=%~dp0..\..\cd\batch
SET folder=%~dp0\latex_doku\log SET result=%~dp0..\..\cd\unit_tests\results\TestResult.xml
ECHO Generieren der Ausgabedatei...
ECHO Ausgabe generiert am %DATE% um %time%>%log%
REM kompilieren
CALL %skripts%\compile.bat>>%log%
REM Systemtests ohne Eingabedateien ausfuehren
CALL %skripts%\run_tests.bat>>%log%
REM ausfuehren
CALL %skripts%\run.bat>>%log%
REM TestResults
IF NOT EXIST %result% GOTO EXT
xcopy "%result%" "%folder%" /y
:EXT
pause
当我不指定代码页时,结果如下所示:
例如,当我指定 cp 1252 时,它看起来像这样:
奇怪的是,角色在编辑器中显示正确......
答案1
你知道包裹吗listingsutf8
?
它允许您使用以下代码以 UTF8(更改为 Latin1)打印源:
% in preamble:
\usepackage{listingsutf8}[2011/11/10]
% to print the utf8 code:
\lstinputlisting[%
style=tests,%
inputencoding=utf8/latin1,%
]{log/log.txt}
由于您没有提供 MWE,因此我无法测试它是否适合您。请自行操作。