在内联逐字中遇到特殊字符时中断

在内联逐字中遇到特殊字符时中断

我正在使用 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}

那么您的例子对我来说是可行的(尽管由于?来得太晚,盒子已经满了。

相关内容