仅当编译为 HTML 时才会出现此问题。
我有一些长的 URL,带有下划线的 URL 在编译为 HTML 时不会在表格内中断,但编译为 PDF 时则会中断。
我尝试了所有能找到的技巧,但 htlatex 仍然不想破坏表格内的 URL。MWE
\documentclass[12pt]{article}%
\usepackage{longtable}
\usepackage{hyperref}
\makeatletter %from http://tex.stackexchange.com/questions/3033/forcing-linebreaks-in-url
\g@addto@macro{\UrlBreaks}{\UrlOrds}
\makeatother
%\usepackage[hyphenbreaks]{breakurl}
%\usepackage[hyphens]{url}
\begin{document}
\begin {longtable}{|p{.2in}|p{2.2in}|p{1in}|p{.8in}|}\hline
1&
\url{http://www.foo.com/questions/aaaaaa/aaaaaaa-aa-aaa-aaaaaaaaa-aaaaaaaaaa-aaaaa-aa-aaaaaaa-aaaaaa}
&
more&1/5/2016
\\\hline
\end{longtable}
Another table
\begin {longtable}{|p{.2in}|p{2.2in}|p{1in}|p{.8in}|}\hline
2&
\url{https://www.foo.com/post/aaa_aaa_aaaa_aaaaaaaa_aaaaa_aa_aaaaaaaaa_aaaaaa_aaa_aaa_aaaaaaaaa_aa_aaaaaaa_aaa_aaaaaaaa_aaaaaaa}
&another good question&1/5/2016\\\hline
\end{longtable}
another one
\begin {longtable}{|p{.2in}|p{2.2in}|p{1in}|p{.8in}|}\hline
1&
aaaaaa aaaaaaa aa aaa aaaaaaaaa aaaaaaaaaa aaaaa aa aaaaaaa
aaaaaa aaaaa aaaaaaaaaa aaaaaaaa aaaaa aaaaaa
aaaaaa aaaaaaa aa aaa aaaaaaaaa aaaaaaaaaa aaaaa aa aaaaaaa
&more&1/5/2016
\\\hline
\end{longtable}
\end{document}
当使用 pdflatex 编译为 pdf 时,正如预期的那样,输出如下:
当使用以下方式编译为 HTML 时
htlatex foo.tex "htm,p-width"
这是输出
这个问题只出现在 URL 带有下划线的情况下。如果 URL 中有连字符,则似乎没有问题。
有没有办法让 tex4ht 也打破带有下划线的 URL?
2015 年
答案1
tex4ht
不会对 URL 中的换行符做任何事情。它适用于连字符,因为浏览器会这样做,但它们不会用下划线断开单词。我们需要插入零宽度空格字符下划线后启用换行。可以使用\g@addto@macro\UrlSpecials
命令定义对某些字符的操作,可能在.cfg
文件中:
\Preamble{xhtml,p-width}
\makeatletter
\def\novspace{\HCode{&\#x200B;}}
\g@addto@macro\UrlSpecials{\do\_{\_\novspace}}
\makeatother
\begin{document}
\EndPreamble
我们定义了\novspace
为零宽度空间 unicode 字符插入 XML 实体的命令,并且该命令插入到下划线后,使用
\g@addto@macro\UrlSpecials{\do\_{\_\novspace}}
结果: