我对 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
如果我理解了这个问题:
pandoc -o yourfile.tex yourfile.txt
\input{yourfile}
然后无需扩展即可使用.txt
。
如果需要,这将转义特殊字符(例如:#
将被更改为\#
)(即,@
根本不会改变,因为它是一个“普通”字符,除了宏名称中(您不应该@
在宏名称中使用,因为它是为内部命令保留的(请参阅 \makeatletter 和 \makeatother 起什么作用?如果你曾经真的\@foo
需要处理文档中的这类内部命令)。
请注意,这并不能解决“更多特殊 UTF8 字符”的问题,这些字符在 LaTeX 中没有任何特殊含义,只是无法与 一起使用pdflatex
。例如,♀ (U+2640) 无法通过“原样”进行管理pdflatex
(致命错误 = 没有 PDF,但您可以加载wasysym
包并使用\female
,例如),而它可以在产生xelatex
或lualatex
不产生致命错误的情况下使用,但您仍然需要一个能够提供此字形的字体(例如,使用默认字体,“原样”的 ♀ 只会产生一个空格,但只需加载libertine
包,您就会在 PDF 中看到 ♀ 符号。)