tex4ht 将 ~ 中的不可破坏空格转换为 html 中的不可破坏空格

tex4ht 将 ~ 中的不可破坏空格转换为 html 中的不可破坏空格

针对我关于空格的问题 内部不可破坏的(薄)空间« »,用于 tex4ht

我使用@michal.h21 提供的有效技巧编辑了我的消息

\ifx\HCode\undefined \else
\usepackage{newunicodechar}
\def\mythinspace{\HCode{<span style="white-space:nowrap">&thinsp;</span>}}
\newunicodechar{«}{«\mythinspace\ignorespaces}
\newunicodechar{»}{\unskip\mythinspace»}
% \newunicodechar{;}{\mythinspace;}
% \newunicodechar{:}{\mythinspace:}
\fi
\begin{document}
\ifx\HCode\undefined \else
\Css{body{background-color:gainsboro;}}
\Css{.fine{
    display: inline-block;
    width:0.125em;}
}

\catcode`\!=\active%
\catcode`\:=\active%
\catcode`\;=\active%
\def\insertthinspace#1{%
  \def#1{\unskip\mythinspace\detokenize{#1}}%
}
\insertthinspace! \insertthinspace: \insertthinspace;
\fi

这个技巧效果很好,但如果我在修改后的技巧中使用数字代码(例如&#8201;薄空间)代替其名称,&thinsp;

\def\mythinspace{\HCode{<span style="white-space:nowrap">&#8201;</span>}}

然后make4ht输出错误:

(d:/texlive/texmf-dist/tex/latex/newunicodechar/newunicodechar.sty)
! Illegal parameter number in definition of \mythinspace.
<to be read again>
8
l.29 ...{\HCode{<span style="white-space:nowrap">&#8
                                                  201;</span>}}
?

问题 1:是否可以输入数值定义中的名称\mythinspace

问题2:是否有可能将~.tex用作薄的不可破坏空间的每一个变成一个

<span style="white-space:nowrap">&thinsp;</span>}

在我的.html???

例如,长划线也---必须有一个不可破坏的空间。我尝试tilde

\catcode`\~=\active%
\def\~{\unskip\mythinspace\ignorespaces}%

但当然,tilde当我需要时它不再显示:尝试编译下面的代码并激活波浪号的替换。

    \textemdash~my text in long dash~---\\
    ---~asdmy text in long dash~\textemdash

\~{n}ana un tilde \~{}.

\char`\~

你会看到tilde消失了。更糟糕的是,并.html没有显示波浪符号被替换为thin non-breakable space

<!--l. 202--><p class="noindent" ><span 
class="cmr-12">—</span><span 
class="cmr-12"> my text in long dash</span><span 
class="cmr-12"> —</span><br 
class="newline" /><span 
class="cmr-12">—</span><span 
class="cmr-12"> asdmy text in long dash</span><span 
class="cmr-12"> —</span>
</p>
<!--l. 205--><p class="noindent" ><span style="white-space:nowrap">&thinsp;</span><span 
class="cmr-12">nana un tilde</span><span style="white-space:nowrap">&thinsp;</span><span 
class="cmr-12">.</span>
</p>
<!--l. 207--><p class="noindent" ><span 
class="cmr-12">˜</span>
</p>

那么,是否有可能将~.tex使用过的每个薄而不可破坏的空间,变成

<span style="white-space:nowrap">&thinsp;</span>}

在我的.html 同时保持了其正常使用方式~,例如\~{o}???

答案1

1)是的,但是您必须将其作为十六进制值输入:

\def\mythinspace{\HCode{<span class="fine">&\#x2009;</span>}}

#字符必须使用 进行转义\#。请注意,此数字实体稍后将替换为 HTML 中的实际 unicode 字符。您可以使用自定义 unicode.4hf 文件

2)~已经是活跃角色,你可以使用以下命令重新定义它:

\def~{\unskip\mythinspace\ignorespaces}%

(所以不行\~

完整示例文档:

\documentclass[oneside,a4paper, 12pt]{article}
%\usepackage[french]{babel}
%\usepackage[style=french]{csquotes}%
\usepackage{alternative4ht}
\altusepackage{polyglossia}
\altusepackage{fontspec}
\setdefaultlanguage{french}

\ifx\HCode\undefined \else
\usepackage{newunicodechar}
\def\semicolon{\detokenize{;}}
\def\mythinspace{\HCode{<span class="fine">&\#x2009;</span>}}
\newunicodechar{«}{«\mythinspace\ignorespaces}
\newunicodechar{»}{\unskip\mythinspace»}
% \newunicodechar{;}{\mythinspace;}
% \newunicodechar{:}{\mythinspace:}
\fi
\begin{document}
\ifx\HCode\undefined \else
\Css{body{background-color:gainsboro;}}
\Css{.fine{
    white-space:nowrap;
  }
}
\Tag{TITLE+}{possibilities for unbreakable space inside « » in HTML}
\catcode`\!=\active%
\catcode`\:=\active%
\catcode`\;=\active%
\def\insertthinspace#1{%
  \def#1{\unskip\mythinspace\detokenize{#1}}%
}
\def~{\unskip\mythinspace\ignorespaces}%
\insertthinspace! \insertthinspace: \insertthinspace;
%unusable solution by @michal.h21
%\def\guillemotleft{\HCode{&laquo;&nbsp;}}
%\def\guillemotright{\unskip\HCode{&nbsp;&raquo;}}
\fi


 ; œ ; Œ ; É ; È ; Ê ; À ; Á ; Å ; Ç

%\euro{}
 ; \oe{} ; \OE{} ; \'{E} ; \`{E} ; \^{E} ; \'{A} ; \`{A} ; \AA{} ; \c{C}

ī \={\i}

My quotes with breakable spaces, once in a html:
« blabla ».

In lualatex, the french spaces for !, ;, : are set properly.
No need for a ~ as in ~!, ~; ~:.

    \textemdash~my text in long dash~---\\
        ---~asdmy text in long dash~\textemdash

        \~{n}ana un tilde \~{}.

        \char`\~        

\end{document}

结果:

在此处输入图片描述

相关内容