输入文件中的特殊字符

输入文件中的特殊字符

我想将我的部分放在.txt作业文件夹中的独立文件中。所以我使用\input{text.txt}。问题是,我用丹麦语书写,并且我们有一些 LaTeX 通常无法识别的“攓ø”“å”字符。我在主文件中修复了它.tex,所以当我写这些字母时,它会很好地显示在我的文档中。但是,如果我将其中一个字符放在文件名或文件中,它就不会很好地显示出来.txt。现在,我不介意在文件名中避免使用它们,但我真的需要它们在文件中被识别。

\documentclass[10pt,a4paper]{article}
\usepackage[danish]{babel}
\renewcommand{\danishhyphenmins}{22}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage[danish=quotes]{csquotes}

\begin{document}
æ ø å
\input{text.txt}
\end{document}

我无法上传.txt文件,但如果你复制这三个字母,将其放在名为text.txt文件的文档中,然后将其放在文件夹中,你就会明白我的意思。

如果我\input{text.txt}从文档中删除,或者避免在输入文件中使用这三个字母,一切都会完美运行,并且会在输出文件中写入“æ ø å”。

我在另一个论坛上问了这个问题,但他们没有提供太多帮助。他们说这是错误的编码,并告诉我,如果我将其保存为.tex文件,会有一个对话框让我可以更改输入文档的编码以使其兼容,但是在我从 TeXworks 获得的“另存为”对话框中没有这样的东西。我也在 TeXworks 的首选项中将其设置为utf8,但这似乎对任何事情都没有太大影响。

答案1

我同意其他论坛中大家的意见 - 问题可能是文本文件的编码错误 - 但我不同意他们的解决方案。根据您的操作系统,我将建议两种不同的解决方案:

在Linux下

首先声明:我使用的是 Ubuntu,其他发行版下的确切命令可能略有不同。但总体思路是一样的,因此您应该能够借助 Google 解决任何问题……

确认诊断

要确认编码确实是问题所在,cd请到文件所在的文件夹,然后执行

$ file *

这将为您提供类似以下的输出(更多文件则如此):

example.tex:             LaTeX 2e document, UTF-8 text
input.txt:               ISO-8859 text

如果文本文件被列为ISO-8859(或类似内容),或者实际上不是“UTF-8 文本”,那么编码就是您的问题。

解决问题

要将 ISO-8859(又名“Latin 1”)转换为 UTF-8,可以使用以下命令

$ iconv -f latin1 -t utf8 input.txt > input.utf8.txt

iconv是一个编码转换实用程序。-f latin1-t utf8是参数,iconv它们告诉程序文件当前采用哪种编码,以及您希望采用哪种编码。要获取可能的编码名称的完整列表,请执行iconv --list。最后一个参数是输入文件的文件名(即“错误”编码的文件)。iconv将新编码的文件写入,stdout因此我们将输出重定向到新文件(不要使用相同的文件名 - 您将用空文件覆盖您的文件)。

在 Windows 下

确认诊断

在 Windows 下确认编码问题的标准方法是在记事本中打开文件并选择Save as...- 然后会出现一个小下拉列表,让您选择文件的编码 - 如果不更改它,它会显示文件的当前编码。通常,我发现使用 UTF-8 时有问题的文件实际上是以 ANSI 保存的,这是 Microsoft 自己的编码(与 ASCII 非常相似)。

如果您遇到编码问题,此下拉列表会显示“UTF-8”以外的内容。

解决问题

要修复此问题,只需在下拉列表中选择 UTF-8,(可选)为输入文件选择一个新文件名,然后点击“保存”。

记事本可以智能地转换文件,但是如果您遇到问题,您可以(通常)简单地逆转该过程以恢复您开始使用的文件,然后尝试其他操作。

答案2

(我对 LaTeX 还很陌生,所以如果我使用了不正确的术语,我深表歉意)

这已经是相当老的问题了,但是如果其他人在 OSX 上遇到这个问题,我在尝试使用从 Stata 获得的回归表输入时发现了不同的解决方案:

只需在您想要输入的辅助文件顶部输入以下内容,然后在 XeLaTeX 下运行主文件:

!TEX encoding = UTF-8 Unicode

相关内容