批量生成的文件使用 latex 时产生编码错误

批量生成的文件使用 latex 时产生编码错误

目标: 这是为了考试。我有一个程序,需要通过批处理脚本编译和执行。另一个批处理脚本首先调用该批处理并将输出写入文件.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,因此我无法测试它是否适合您。请自行操作。

相关内容