当使用法语 guillemets 与 TeX4HT 时,生成的符号后面/前面没有像应有的那样有不间断空格,从而导致 HTML 中出现错误的换行。
我尝试重置\og
并\fg
使用babel.4ht
文件,但什么都做不了。到目前为止,我找到的唯一解决方案如下:
我使用以下命令定义了新\Og
命令\Fg
:
\ifluatex
\newcommand{\Og}{\og}
\newcommand{\Fg}{\fg{}}
\else
\newcommand{\Og}{\HCode{« }}
\newcommand{\Fg}{\HCode{ »}}
\fi
同时还有一个sed
hack 来删除之前的空格
:
sed -i "s@ * *@\ @g" $HTML
我想删除它并在文件中正确执行.4ht
。我该怎么做?
编辑:
\Og
/ hack\Fg
实际上对我来说是可以接受的,但 sed 不行,所以我修改了这个问题的标题:如何删除命令前的空格?
答案1
您可以使用以下\unskip
方法删除之前不需要的空间
:
\documentclass{article}
\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\begin{document}
some text \og and more text \fg\ and again some text
\end{document}
您可以在自定义配置文件中或者在以下位置重新\og
定义:\fg
frenchb.4ht
hello.cfg
:
\Preamble{xhtml}
\AtBeginDocument{
\def\og{\HCode{« }}
\def\fg{\unskip\HCode{ »}}
}
\begin{document}
\EndPreamble
编译
htlatex filename "hello,charset=utf-8" " -cunihtf -utf8"
结果:
<p class="noindent" >some text « and more text » and again some text
</p>