内部不可破坏的(薄)空间« »,用于 tex4ht

内部不可破坏的(薄)空间« »,用于 tex4ht

编辑:@michal.h21

你的技巧很有效,但如果我使用数字代码(例如薄空间)而不是你修改后的技巧中 的名称, 

\def\mythinspace{\HCode{<span style="white-space:nowrap">&thinsp;</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}???

========= 编辑结束 ============

在我的 中.tex,我同时使用---和,\textemdash并且我总是~在长划线内放置一个。尽管如此,在 中.html它们~被抑制,变成了一个规则的可破坏空间

是否可以告诉

我不知道html但是我想.html.tex写在utf8包含引号的 中输出一个«»以及其他类似输入,这些输入lualatex在 中显示良好.pdf。问题是,与lualatex使引号内的空格牢不可破相反,我的命令

make4ht -ul hello.tex

不会在 , 内放置牢不可破的空间«»@michal.h21,michal.h21,删除命令前的空格.html,给出了替换中的个人命令的解决方案,.tex但由于我直接输入引号 «,,»我不能使用它们。

为了便于携带避免a .cfg,我还想要一个可以放在里面的解决.tex方案\ifx\HCode\undefined \else

\ifx\HCode\undefined \else
%unusable solution by @michal.h21
%\def\guillemotleft{\HCode{&laquo;&nbsp;}}
%\def\guillemotright{\unskip\HCode{&nbsp;&raquo;}}
\fi

因此,完整的文档将是:

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

\ifx\HCode\undefined \else
\Css{body{background-color:gainsboro;}}
\Tag{TITLE+}{possibilities for unbreakable space inside « » in HTML}
%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 ~!, ~; ~:.





\end{document}

这里展示了各种空间html

在 HTML 中创建固定宽度不间断空格的最佳方法可能是使用不间断空格并设置其宽度样式。由于内联元素的宽度无法在 CSS 中设置,因此根据规范,我们将元素设为内联块。这意味着像下面这样的标记(其中 可以用不间断空格字符本身替换):

<span class=fine>&nbsp;</span>

样式表可以是:

.fine {
  display: inline-block;
  width: 0.125em;
} 

这使

<div>text before the quote <a class=fine> </a>: «<a class=fine> </a>the quote itself <a class=fine> </a>!<a class=fine> </a>».</div>

NARROW NO-BREAK SPACE他说,除了普通的,还有一个NO-BREAK SPACE

问题:

我怎样才能将我的«»在我的.tex,转变html

  • «<a class=fine> </a>
  • <a class=fine> </a>»

一般来说,我怎样才能确定french spacing(对于!,等等)在我的中使用了?;:html

答案1

我认为使用.cfg可重复使用的文件比修改源文件更好。但你想要它,所以它在这里:

\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\mythinspace{\HCode{<span class="fine"> </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;}
}
\Tag{TITLE+}{possibilities for unbreakable space inside « » in HTML}
\catcode`\!=\active%
\catcode`\:=\active%
\catcode`\;=\active%
\def\insertthinspace#1{%
  \def#1{\unskip\mythinspace\detokenize{#1}}%
}
\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 ~!, ~; ~:.
\end{document}

我们使用\newunicodecharfor «», for :!并且;我们必须使用 catcode 来激活它们。这样我们可以将它们声明为宏并插入我们想要的任何代码。

我们必须使用\unskip来删除前面的空格和\ignorespaces后面的空格,否则我们会得到两个连续的空格。

结果:

在此处输入图片描述

相关内容