我正在使用 Pandoc 生成 LaTeX。我的文本包含内联代码跨度(markdown 中的反引号),这些代码跨度以\texttt{...}
TeX 形式呈现。但是,其中一些代码跨度很长,会溢出行,例如此段落:
In the context of the variables
\texttt{\{"query": "mycelium", "number": 100\}}, this would be expanded to
the URI \texttt{http://www.example.com/foo?query=mycelium\&number=100}.
我无法更改生成的代码,因为这会影响呈现为 HTML 时的输出。
我尝试插入一个 unicode 零宽度空格,但 pdflatex 会卡住。我无法在 verbatim 环境中使用 TeX 命令,因为 Pandoc 在将它们输出到 : 中之前会转义所有这些命令\texttt
:
$ echo 'my `code\bar`' | pandoc -t latex
my \texttt{code\textbackslash{}bar}
因此,我正在寻找一个 TeX 命令,\texttt
当行太长时,该命令会重新定义以重新排列行。或者,一个命令会将所有太长的单词拆分为特殊字符,例如?=%&
。
编辑:我尝试了以下操作,但没有任何效果(63 是的十进制 ascii 代码点?
):
\documentclass[]{article}
\usepackage{lmodern} % with or without this...
% ... either of the following don't work:
\DeclareFontFamily{T1}{cmtt}{\hyphenchar \font=63}
\DeclareTextFontCommand{\mytexttt}{\ttfamily\hyphenchar\font=63\relax}
\begin{document}
In the context of the variables
\texttt{\{"query": "mycelium", "number": 100\}}, this would be expanded to
the very long long long URI \texttt{http://www.example.com/foo?query=mycelium\&number=100}.
\end{document}
答案1
您的示例不能在 ? 处中断,因为第一个定义定义了 T1 编码中 cmtt 的连字符(并且您使用 lmodern),而第二个定义定义了\mytexttt
但您的文档使用\texttt
。
如果你
\texttt
用。。。来代替\mytexttt
- 或者删除 lmodern 并使用
\usepackage[T1]{fontenc}
- 或者删除 lmodern 并使用
\DeclareFontFamily{OT1}{cmtt}{\hyphenchar \font=63}
那么您的例子对我来说是可行的(尽管由于?来得太晚,盒子已经满了。