我怎样才能逃脱纯文本?

我怎样才能逃脱纯文本?

如何通过给定纯文本字符串来生成等效的 Latex 代码?例如

red fox
sauté
zażółć gęślą jaźń
\newline is a new line in LaTeX
Samp_Dist_Corr

会产生类似

red fox\newline
saut\'e\newline
za\.z\'o\l\'c g\c{e}\'sl\c{a} ja\'z\'n\newline
\textbackslash{}newline is a new line in LaTeX\newline
\verb|Samp_Dist_Corr|

(上面的示例输出很差 -ę并且ą没有正确转换,Samp_Dist_Corr 的显示风格与其余文本不同......)

(基于单词(文本)中的下划线如何在 LaTeX 中插入反斜杠或波浪符号 (~)? LaTeX 中的转义字符

\obeylines似乎足以处理换行符(不使用 \newline 命令插入新行)(尽管用文本替换\n字符和\r\n组合\newline是最简单的部分)。

\verbatim不是转义的解决方案,因为我希望 LaTeX 能够管理换行符(并且根据https://tex.stackexchange.com/a/153595/69392文本\verbatim换行已禁用)。

https://stackoverflow.com/questions/1696997/convert-plain-text-to-latex-code-programmatically讨论了这个问题并提到了其他陷阱,但没有提到解决方案

总的来说,我强烈倾向于使用任何现有的库/脚本,而不是创建一个新的并一遍又一遍地发现特殊情况。

我想指出的是,我对任何脚本/库、任何编程语言都感到满意。


为了避免 XY 问题:我有多个包含烹饪食谱的 txt 文件,我想将它们转换为美观的 pdf 文件。我可以自动将每个文本文件分成标题/配料列表/烹饪说明/准备所需的时间等。因此,我想生成一个 TeX 文件,该文件合并了所有食谱并带有必要的 TeX 格式。稍后我将使用编译文本来生成 pdf 文件pdflatex

情况有点复杂,因为食谱是波兰语的,所以需要 żółćęśąźńŻÓŁĆĘŚĄŹŃ,而且 é 和其他外语字母也可能出现在专门的词汇中(比如 sauté)或在原始食谱标题的提及中 - 所以我更喜欢通用解决方案,而不是在 babel 指令中塞入大量的语言列表(尽管这可能是比转义更好的解决方案?)。

答案1

fancyvrb这是一个使用(带有扩展)的想法fvextra

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{showframe} %to show boundaries, remove this line for normal output


\usepackage{fvextra}
\DefineVerbatimEnvironment{mateusz}
  {Verbatim}
  {fontfamily=\rmdefault,breaklines,breaksymbolleft={}}

\begin{document}

\begin{mateusz}
red fox
sauté
zażółć gęślą jaźń
\newline is a new line in LaTeX
Samp_Dist_Corr
whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever whatever
\end{mateusz}

\end{document}

showframe只是用它来显示文本块的边界。

在此处输入图片描述

答案2

\verbatim不是转义的解决方案,因为我希望 LaTeX 能够管理换行符

该软件包spverbatim还允许在空格处换行。它与 和pdflatex以及xelatex适当的前导码一起使用。例如xelatex

姆韦

\documentclass[a4paper,twocolumn]{article}
\usepackage{spverbatim}
\usepackage{fontspec} % Do not use with pdflatex
% \usepackage[T1]{fontenc} % with pdflatex only
% \usepackage[utf8]{inputenc} % with pdflatex only
\begin{document}
\begin{spverbatim}
    Long text where it is allowed line breaks at the spaces. 
    red fox
    sauté
    zażółć gęślą jaźń 
    \newline is a new line in LaTeX
    Samp_Dist_Corr
    So żółćęśąźńŻÓŁĆĘŚĄŹŃ are expected. 
\end{spverbatim}
\end{document}

因此预计会出现 żółćęśąźńŻÓŁĆĘŚĄŹŃ,还有 é 和其他外文字母

使用utf8选项 in inputenc包和T1选项 in,fontenc您将获得您显示的所有字符。如果还有其他字符,您可能需要额外的解决方案。例如,我经常应该使用 µ符号,但上面的默认字体还不够。对于这种情况有不同的解决方案,例如包textcomp,或字体包libertine,还有其他支持欧元或希腊符号的包。

如果您对其他符号有问题,请考虑切换到xelatexlualatex使用该fontspec包。即便如此,您可能需要更改字体以获得更多奇怪的字形。在某些情况下,甚至使用不在 CTAN 中的字体。例如,CTAN 中的许多(所有?)字体都没有 unicode 鼠标表情符号的字形(

相关内容