我发现一个提示来自 Karl Berry 4 年前撰写的关于如何在代码示例中输出换行的文章texi2pdf
。我在下面演示了该解决方案。但是,想知道是否有一种方法可以做到这一点而不需要手动调整要打印的表达式,这将很有趣。
我想到的一个可能的解决方法是根据需要进行手动调整并将其包装在@ifpdf
标签中。但这似乎明确不可能。
目前,Texinfo 不提供像其他输出格式那样的“@ifpdf”或“@pdf”命令,因为 PDF 文档包含许多内部低级偏移量和引用,这些偏移量和引用在 Texinfo 源级别很难或不可能正确获取。
\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename longline.info
@settitle Long Line Sample
@c %**end of header
@node Top
@chapter Long line example
Here is an example of a code block, it is formatted using a pair of matching @code{@@example} and @code{@@end example} tags.
@example
(["lessfrequentword" java.lang.string]
["mostfrequentword" java.lang.string]
["wordstupleswithfrequency"
#<parameterizedtypeimpl java.util.arraylist<java.lang.string[]>>]
["words" #<parameterizedtypeimpl
java.util.arraylist<ccg.flow.processnodes.text.retrievers.dictionary.dictionaryitem>>])
@end example
As you can see, there is no linewrapping. What I would like is something that looks more like this:
@quotation
@t{(["lessfrequentword" java.lang.string]}@*
@t{["mostfrequentword" java.lang.string]}@*
@t{["wordstupleswithfrequency"}@*
@t{#<parameterizedtypeimpl java.util.arraylist<java.lang.string[]>>]}@*
@t{["words" #<parameterizedtypeimpl}@*
@t{ java.util.arraylist<ccg.flow.processnodes.text.retrievers.dictionary. dictionaryitem>>])}@*
@end quotation
But ideally without the need to hand-tweak the text (note extra space introduced in the
second listing in particular).
@bye
答案1
类似这样的事情可能是一个开始
启动文件
\input texinfo @c -*-texinfo-*-
@iftex
@input texinfoextras
@end iftex
然后使用以下方法进行编译(例如 Info)
makeinfo --no-iftex texinfo.texi
隐藏来自该处理器的输入命令。
对于处理texi2pdf
,一个明智的texinfoextras.tex
做法是
@catcode`@\=0
\let\oldexample\example
{
\gdef\example{\oldexample
\relax
\catcode46=\active
\def\normaldot{\string.\hfil\penalty0\hfilneg}}
}
@catcode`@\=13
允许换行,.
结果为