使用宏调用时 tex4ht 与 pdf 的结果不同

使用宏调用时 tex4ht 与 pdf 的结果不同

我有一个小宏,我用它来帮助我建立一些链接。下面是这个问题的一个非常简化的版本。一些链接#在 URL 中有。所以我不得不#使用\#

在生成的 PDF 中,此方法可以正常工作。但是当我编译为 HTML 时, 之前的破折号仍然#存在,因此在 tex4ht 生成的 HTML 中,URL 无效。

如果我不逃避,#那么乳胶就会抱怨。

我使用的实际 URL 是 https://groups.google.com/forum/#!forum/fricas-devel

这是 MWE,由 pdflatex 输出,由 make4ht 输出

\documentclass[11pt]{article}
\usepackage{hyperref}

\newcommand{\addEntry}[1]
{%  
    \url{#1} 
}%

\begin{document}
Here is a link to a computer algebra FriCAS google news group:

\addEntry{https://groups.google.com/forum/\#!forum/fricas-devel}
\end{document}

PDF 中的结果如下

Mathematica 图形

以下是结果make4ht foo.tex(生成的 HTML 页面的屏幕截图)

Mathematica 图形

您会看到 卡\在那里。这意味着当我点击链接时,它不起作用。当我点击它时,浏览器会将链接更改为

    https://groups.google.com/forum//#!forum/fricas-devel

//因此,当只需要一个时却出现了多余的内容/ ,因此我每次都必须手动/从 URL 中删除一个才能使其正常工作。

以下是 make4ht 生成的原始 HTML

<?xml version="1.0" encoding="iso-8859-1" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->  
<html xmlns="http://www.w3.org/1999/xhtml"  
> 
<head><title></title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)" /> 
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)" /> 
<!-- xhtml,html --> 
<meta name="src" content="foo.tex" /> 
<link rel="stylesheet" type="text/css" href="foo.css" /> 
</head><body 
>
<!--l. 11--><p class="noindent" >Here is a link to a computer algebra FriCAS google news group:
</p><!--l. 13--><p class="indent" >   <a 
href="https://groups.google.com/forum/\#!forum/fricas-devel" class="url" ><span 
class="cmtt-10x-x-109">https://groups.google.com/forum/\#!forum/fricas-devel</span></a> </p> 
</body></html> 

我正在使用 texlive 2016

make4ht -version
make4ht version 0.1b

which make4ht
/usr/local/texlive/2016/texmf-dist/scripts/make4ht/make4ht

如何修复此问题,以便 tex4ht 不会保留\PDF 中的链接?

答案1

我认为最好的解决方案是允许将未转义的#字符作为参数插入到自定义宏中:

\documentclass[11pt]{article}
\usepackage{hyperref}

\newcommand{\addEntry}[1]
{%  
  \expandafter\url\expandafter{\detokenize{#1}}%
}%

\begin{document}
Here is a link to a computer algebra FriCAS google news group:

\addEntry{https://groups.google.com/forum/#!forum/fricas-devel}
\end{document}

这与pdflatex和都有效tex4ht

在此处输入图片描述

答案2

您的问题有一个解决方案,但我无法将其构建到 中。解决方案\addEntry是(本地)更改:\catcode#

\documentclass[11pt]{article}
\usepackage{hyperref}

\newcommand{\addEntry}[1]
{%  
    \url{#1} 
}%

\begin{document}
Here is a link to a computer algebra FriCAS google news group:

\begingroup
\catcode`\#=11
\addEntry{https://groups.google.com/forum/#!forum/fricas-devel}
\endgroup
\end{document}

相关内容