如何通过给定纯文本字符串来生成等效的 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
,还有其他支持欧元或希腊符号的包。
如果您对其他符号有问题,请考虑切换到xelatex
或lualatex
使用该fontspec
包。即便如此,您可能需要更改字体以获得更多奇怪的字形。在某些情况下,甚至使用不在 CTAN 中的字体。例如,CTAN 中的许多(所有?)字体都没有 unicode 鼠标表情符号的字形(