我有一些想要导入的文本文件(日志)
我看到了这篇文章: 如何导入文本文件使其成为 LaTeX 文档的正文? 它可以工作,但是所有特殊字符(UTF-8)都会被删除,而保留字符(例如:\、%)会被解释。
例如。:
ó(%n*\r\ vir\róecu rdOhO {j I iT( J ty g
verbatim 包解决方案
\usepackage{verbatim}
\verbatiminput{a.txt}
使用 % 可以正常工作,但使用 UTF-8 则不行
有什么线索我该怎么办?
答案1
您需要使用支持 unicode 的 LaTeX 版本。使用lualatex
或xelatex
代替(pdf)latex
或 尝试加载\usepackage[utf8]{inputenc}
。
%
可以使用\catcode`\%=12
或暂时禁用等特殊字符。如果更改为 使用 ,\@makeother\%
则可以使用 一次性更改所有特殊字符。\dospecial
\do
\@makeother
您需要一种包含正确编码的现代字体,以便正确显示特殊字符。否则,您将得到"
而不是\
等。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\makeatletter
\newcommand*{\inputverbatim}[1]{%
\begingroup
\let\do\@makeother
\dospecials
\obeyspaces% To get normal spaces not a symbol
\input{#1}%
\endgroup
}
\makeatother
\begin{document}
...
\inputverbatim{somefile}
...
\end{document}
这对我来说很好用,pdflatex
并且给出:
...
ó(%n*\r\ vir\róecu rdOhO {j I iT( J t-y g
...
答案2
如果你恰好知道它们是什么字符,并且想偷懒一点,你可以使用 将它们的类别代码更改为普通文本\catcode
。
\catcode`<symbol>=11
使用11
普通符号的代码时,请注意需要用符号的 LaTeX 格式(将是或将是)symbol
替换。#
\#
é
\'e
这里是数字代码的列表。
不过,您必须小心,更改重要字符(如\
)可能会导致整个程序失败。您可以通过输入完全相同但带有链接中相应的数字代码的字符来恢复它。
我仅将其与井号 (#) 一起使用,到目前为止没有任何问题。