我有一个包含类似以下行的文本文件:
我在用:
\usepackage[utf8x]{inputenc}%
\usepackage{textalpha} % <--- Greek letters in text
但输出仍然如下所示:
我怎样才能让它工作?
以下是代码
\documentclass{article}%
\usepackage[utf8]{inputenc}%
\usepackage{textalpha} % <--- Greek letters in text
\begin{document}%
\begingroup %I am using that because I am actually importing a text file
\noindent
\obeyline
\input{aᵢ₁x₁ + aᵢ₂x₂ + ... + aₙ₁xₙ = bᵢ}%
\endgroup%
\end{document}
顺便说一句:如果我用 Word Pad 打开文本文件,它看起来像这样:
以下是完整的文本文件:https://ufile.io/rxs84
答案1
您可以使用 Unicode 引擎和允许以禁用 TeX 特殊字符(如或 )catchfile
的模式输入文本文档的 包。$
\
我已将其配置为允许文本重排。
但是空格将像往常一样由 TeX 处理,因此输入可以使用 U+00A0(不间断空格)来强制一些受尊重的间距。
输入文件中由空行分隔的段落将通过\parskip
设置进行模拟,因此在这种方法中,多个空行将融合为一个。
这个答案是从@DavidPurton 的答案演变而来的(抱歉我在那里发表了一些误导性的评论,现在已被删除)。
\documentclass[french, a4paper]{article}
\usepackage{geometry}
\usepackage{babel}
\usepackage{fontspec}
\setmainfont{DejaVu Serif}
\setsansfont{DejaVu Sans}
\setmonofont{DejaVu Sans Mono}
\newfontfamily\DejaVuSansWithNoTeXLigatures{DejaVu Sans}[]% disable TeX ligatures
\usepackage{catchfile}
\makeatletter
\newcommand\mysanitize{%
\let\do\@makeother
\dospecials
\catcode32=10\relax
}
\newcommand\myVerbInput[1]{\par
\CatchFileDef{\my@file}{#1}{\mysanitize}%
\begingroup
% put here the font commands you want
% we shall use for this demo:
\DejaVuSansWithNoTeXLigatures
\frenchspacing
\parindent\z@
\parskip\baselineskip
\my@file\par
\endgroup}
\makeatother
% For demonstration only
\usepackage{filecontents}
\begin{filecontents*}{\jobname.txt}
Bon est une solution de quoi ? C'est une solution de l'équation aᵢ₁x₁
+ aᵢ₂x₂ + ... + aₙ₁xₙ = bᵢ. Bon est une solution de quoi ? C'est une
solution de l'équation aᵢ₁x₁ + aᵢ₂x₂ + ... + aₙ₁xₙ = bᵢ. Bon est une
solution de quoi ? C'est une solution de l'équation aᵢ₁x₁ + aᵢ₂x₂ +
... + aₙ₁xₙ = bᵢ. Bon est une solution de quoi ? C'est une solution de
l'équation aᵢ₁x₁ + aᵢ₂x₂ + ... + aₙ₁xₙ = bᵢ.
Voici un nouveau paragraphe, une vraie logorrhée mathématique et on va
tester au passage si l'ensemble {$&~#$&~#$&~#éàçè§è} donne autant de
problèmes que l'ensemble vide. Voici un nouveau paragraphe, une vraie
logorrhée mathématique et on va tester au passage si l'ensemble
{$&~#$&~#$&~#éàçè§è} donne autant de problèmes que l'ensemble vide.
Voici un nouveau paragraphe, une vraie logorrhée mathématique et on va
tester au passage si l'ensemble {$&~#$&~#$&~#éàçè§è} donne autant de
problèmes que l'ensemble vide.
Ok alors essayons quelques trucs en Unicode:
ασδφγηηξκμ
⇒☛«»❮❯‱❝❞€☂☃.
Ligature: -- ? non, tout va bien n'est-ce pas?
(fin de la démonstration de l'Hypothèse du continu)
\end{filecontents*}
\begin{document}
Text before (serif)
\myVerbInput{\jobname.txt}
Text after (serif)
\end{document}
% Local variables:
% TeX-engine: xetex
% End:
像往常一样,OpenType 字体存在字形覆盖范围不够的问题,这就是我选择 DejaVu Sans 的原因。Serif 字体缺少上面使用的一些字形。
答案2
如果你想输入一个 utf-8 编码的文本文件,并且只想让它大部分工作,而不太关心它的外观,那么我建议使用组合
- unicode TeX 引擎(
lualatex
或xelatex
) - 具有广泛 Unicode 覆盖范围的字体(例如 Free Serif)
- 一些允许换行的逐字环境(例如
fancyvrb
与 结合fvextra
)
使用lualatex
或编译此xelatex
代码。这将允许在空格处自动换行。我不确定如何使文本对齐,但也许你不太在意。
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Free Serif}[NFSSFamily=freeserif]
\usepackage{fancyvrb}
\usepackage{fvextra}
\begin{document}
\VerbatimInput[fontfamily=freeserif,breaklines,breaksymbol={}]{3.txt}
\end{document}