我找到了很好的解决方案这里它允许将逐字用作 的第二个参数href
。这是我尝试了很多次之后发现的唯一解决方案,我可以使用逐字作为 的第二个参数href
。(不,我不想使用\url
,我需要使用href
因为我想使用特定的较短目标名称,因为 URL 可能很长)
它在 pdf 中有效。当我在 tex4ht 中尝试时,我得到了一个编译错误。这是 MWE
\documentclass[12pt,notitlepage]{article}
\usepackage{hyperref}
\usepackage{verbatimbox}
\begin{document}
\begin{myverbbox}{\myTarget}https://some_url_with_^many_%*?_strange_characters/report.htm\end{myverbbox}
\href{https://some_url_with_^many_%*?_strange_characters/report.htm}{\myTarget}
\end{document}
这在 lualatex 中编译为 pdf 没有任何问题
但在 tex4ht 中会出现错误
make4ht -ulm default -a debug main.tex "mathjax,htm,nostyle"
...
(/usr/local/texlive/2023/texmf-dist/tex/latex/l3backend/l3backend-dvips.def)
(./main.aux) (/usr/local/texlive/2023/texmf-dist/tex/latex/base/ts1cmr.fd)
(/usr/local/texlive/2023/texmf-dist/tex/latex/lm/t1lmtt.fd)
! Missing \endcsname inserted.
<to be read again>
\hbox
l.59 ...strange_characters/report.htm\end{myverbbox}
tex4ht 不支持 verbatimbox 吗?如何让它在 tex4ht 中也能工作?
TL 2023
tex4ht追踪
答案1
此问题似乎是由\sbox
TeX4ht 重新定义命令引起的。以下配置文件应该可以修复此问题:
\Preamble{xhtml}
\catcode`\:=11
\let\sbox\:sbox
\DeclareRobustCommand\:xbox[2]{\o:sbox:{#1}{{#2}}}
\HLet\sbox\:xbox
\catcode`\:=12
\begin{document}
\EndPreamble
经过这个改变,它可以编译:
<!-- l. 11 --><p class='noindent'><a href='https://some_url_with_^many_%*?_strange_characters/report.htm'><span class='cmtt-12'>https://some_url_with_^many_%*?_strange_characters/report.htm</span> </a>
</p>