编辑:@michal.h21
你的技巧很有效,但如果我使用数字代码(例如薄空间)而不是你修改后的技巧中 
的名称, 
\def\mythinspace{\HCode{<span style="white-space:nowrap"> </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">
201;</span>}}
?
问题 1:是否可以输入数值定义中的名称\mythinspace
?
问题2:是否有可能将~
我.tex
用作薄的不可破坏空间的每一个变成一个
<span style="white-space:nowrap"> </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"> </span><span
class="cmr-12">nana un tilde</span><span style="white-space:nowrap"> </span><span
class="cmr-12">.</span>
</p>
<!--l. 207--><p class="noindent" ><span
class="cmr-12">˜</span>
</p>
那么,是否有可能将~
我.tex
使用过的每个薄而不可破坏的空间,变成
<span style="white-space:nowrap"> </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{« }}
%\def\guillemotright{\unskip\HCode{ »}}
\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{« }}
%\def\guillemotright{\unskip\HCode{ »}}
\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 中创建固定宽度不间断空格的最佳方法可能是使用不间断空格并设置其宽度样式。由于内联元素的宽度无法在 CSS 中设置,因此根据规范,我们将元素设为内联块。这意味着像下面这样的标记(其中 可以用不间断空格字符本身替换):
<span class=fine> </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{« }}
%\def\guillemotright{\unskip\HCode{ »}}
\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}
我们使用\newunicodechar
for «
和»
, for :
,!
并且;
我们必须使用 catcode 来激活它们。这样我们可以将它们声明为宏并插入我们想要的任何代码。
我们必须使用\unskip
来删除前面的空格和\ignorespaces
后面的空格,否则我们会得到两个连续的空格。
结果: