如何将多个包含特殊字符的 txt 文件输入到我的主 tex 文件中?

如何将多个包含特殊字符的 txt 文件输入到我的主 tex 文件中?

我对 LaTex 还很陌生,正在用 TexMaker 学习。我想写一本书。这本书我有 99 个 txt 文件(每个文件一章)。

我想使用命令将这些章节导入到我的主要 tex 文件中\input{}。问题是,txt 文件中有特殊字符,如 #、@ 或 _。当我尝试输入它们时,会出现错误。我不想浏览所有 txt 文件并在特殊字符前面添加 \。是否可以禁用这些字符的功能?

谢谢你的帮助

编辑:

谢谢你的评论。我试着解释得更清楚。我的文件夹结构如下:

../BookProject/myTemplate_A5_Book.tex

../BookProject/Parts/Part_1.txt...Part_99.txt

在 Part_x.txt 文件中使用了特殊字符(我用 AI 生成它们,所以我不是自己写的,而且我现在也不知道所有使用的字符)。

我的目标是将 txt 文件的文本导入为带有换行符等的段落。但是当我使用\input{}第一个文件时,它正常工作,然后到第 11 部分时出现错误(见图)。

在此处输入图片描述

我希望这有助于理解我的问题。

答案1

如果你的文件就像file1.txt

#!/bin/sh

# define FOO
FOO=abc

# show FOO
echo $FOO

然后你可以逐字输入:

在此处输入图片描述

使用

\documentclass{article}

\usepackage{verbatim}

\begin{document}

\section{File 1}
\verbatiminput{file1.txt}

\end{document}

但你可能更喜欢了解格式的更高级的格式(这里是 unix shell)

在此处输入图片描述

\documentclass{article}

\usepackage{listings}

\begin{document}

\section{File 1}
\lstinputlisting[language=sh]{file1.txt}

\end{document}

但是如果你的文本文件是普通文本,但包含 LaTeX 特殊字符,例如file2.txt

This is some text that costs $0.00 which is an increase of 0% on the old price
You can find it in my home directory ~/file2.txt  and ping me on
stackexchange using @

This is a second paragraph of useless text.
This is a second paragraph of useless text.
This is a second paragraph of useless text.
This is a second paragraph of useless text.
This is a second paragraph of useless text.
This is a second paragraph of useless text.
This is a second paragraph of useless text.
This is a second paragraph of useless text.
This is a second paragraph of useless text.


And here is another mention of a price in $: $30.

那么您不希望逐字等宽渲染并保留所有行尾,而是只需要设置文本但将其视为$普通字符,如下所示:

在此处输入图片描述

\documentclass{article}

\usepackage[T1]{fontenc}
\begin{document}

\section{File 2}
{
\catcode`\$=12
\catcode`\_=12
\catcode`\^=12
\catcode`\%=12
\catcode`\~=12
\input{file2.txt}
}

\end{document}

答案2

如果我理解了这个问题:

  1. pandoc -o yourfile.tex yourfile.txt

  2. \input{yourfile}然后无需扩展即可使用.txt

如果需要,这将转义特殊字符(例如:#将被更改为\#)(即,@根本不会改变,因为它是一个“普通”字符,除了宏名称中(您不应该@在宏名称中使用,因为它是为内部命令保留的(请参阅 \makeatletter 和 \makeatother 起什么作用?如果你曾经真的\@foo需要处理文档中的这类内部命令)。

请注意,这并不能解决“更多特殊 UTF8 字符”的问题,这些字符在 LaTeX 中没有任何特殊含义,只是无法与 一起使用pdflatex。例如,♀ (U+2640) 无法通过“原样”进行管理pdflatex(致命错误 = 没有 PDF,但您可以加载wasysym包并使用\female,例如),而它可以在产生xelatexlualatex不产生致命错误的情况下使用,但您仍然需要一个能够提供此字形的字体(例如,使用默认字体,“原样”的 ♀ 只会产生一个空格,但只需加载libertine包,您就会在 PDF 中看到 ♀ 符号。)

相关内容