仅使用 tex4ht 时出现 URL 中断问题

仅使用 tex4ht 时出现 URL 中断问题

仅当编译为 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 时,正如预期的那样,输出如下:

Mathematica 图形

当使用以下方式编译为 HTML 时

 htlatex foo.tex "htm,p-width"

这是输出

Mathematica 图形

这个问题只出现在 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}}

结果:

在此处输入图片描述

相关内容