xelatex
我正在建立一个看起来是这个样子的文档纯文本文件外观使用tex4ht
。我制作了一个html
文档,然后生成了一个可以复制到记事本中的很棒的文档。
为此,我手动创建了一些格式结构,如伪下划线标题:
TITLE HERE AND UNDERLINED WITH REPEATED SYMBOLS
-----------------------------------------------
Text of the document goes here
No bold formatting or anything is preserved from the html file
So I am not to concerned with customizing the formatting of the html output
如下例所示,我使用HCode
检测块在版本之间切换。
我非常确定我应该接近使用复制宏/新命令插入符号,但我无法htlatex
保留后缀。我不太了解 CSS 文件何时接管或为什么这会成为一个问题,但我尝试了几种不同的方法,但在下面的 MWE 中,我只保留(并注释掉)了我认为最接近的那些。
\documentclass[10pt]{article}
\usepackage{stringstrings}
\usepackage{xparse}
\usepackage{titlesec} %custom \section
\ifdefined\HCode
% appearance of sectioning commands should be taken care of in a custom cfg file for the tex4ht compile process
%http://tex.stackexchange.com/questions/147370/change-chapter-formatting-with-tex4ht-and-memoir
\makeatletter
\renewcommand\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{-1em}%
{\normalfont\scshape\raggedright}%
%\newline\TextUnderline{section}%
}
\makeatother
%\titleformat{\section}{\normalfont\bfseries\raggedright}{Section \thesection, suffix }{0em}{}
\else
\titleformat{\section}{\Large\scshape\raggedright}{}{0em}{}[\titlerule]%
\titlespacing{\section}{0pt}{3pt}{3pt}%
\fi
\ExplSyntaxOn
\cs_new_eq:NN \EngBIRDreplication \prg_replicate:nn
\ExplSyntaxOff
\NewDocumentCommand\TextUnderline{ O{1} }%
{%
%http://tex.stackexchange.com/questions/276083/is-int-step-inlinennnn-inserting-something-after-it-finished
\EngBIRDreplication{\stringlength{#1}}{-}%\hspace*{0.5em}}%
}
\NewDocumentCommand\spacers{ O{1} }%
{%
%http://tex.stackexchange.com/questions/276083/is-int-step-inlinennnn-inserting-something-after-it-finished
\EngBIRDreplication{#1}{~}%\hspace*{0.5em}}%
}
%--------------------BEGIN DOCUMENT----------------------
\begin{document}
\pagestyle{empty} % non-numbered pages
\section{Hello World}
\clearpage
\end{document}
答案1
LaTeX 命令在序言之后重新定义,因此如果你\section
在序言中重新定义,它将被覆盖。tex4ht
无论如何,你应该使用配置来处理这些内容。看看这个较旧的答案如何配置它以生成类似 wiki 的标记。
对于您的特定请求,它有点复杂,因为您必须计算部分中的字符,包括编号。我毫不怀疑它可以从 TeX 中处理,但在我看来,使用一些更高级的工具来修改 HTML 更有效。简单的解决方案是使用 JavaScript 和 HTML DOM。
将此文件另存为underlinesec.js
:
var undersecns = (function(){
var getLength = function(el){
// get text content of the element
var text = el.textContent;
// collapse spaces
text = text.replace(/[ ]+/g," ");
return text.length;
};
var repeat = function(str, count){
var t = "";
for(i=0;i<count;++i) t = t + str;
return t
};
var makeEl = function(text){
var div = document.createElement("div");
div.setAttribute("class","under");
var t = document.createTextNode(text);
div.appendChild(t);
return div
};
var addUnder = function(selector, ch){
var el = document.querySelectorAll(selector);
for(var i=0;i< el.length; ++i){
var item = el[i];
var length = getLength(item);
// make string with repeated hyphen
var newstr = repeat(ch, length);
var div = makeEl(newstr);
item.appendChild(div);
}
};
document.addEventListener("DOMContentLoaded", function(event) {
// add commands for all section levels
addUnder(".sectionHead", "-");
});
})();
它将处理所有部分(它们具有sectionHead" class), count characters of the section title and add string of
相同的长度)。
您必须将其插入到您的文档中,您可以使用此.cfg
文件执行此操作:
\Preamble{xhtml}
\Configure{@HEAD}{%
\HCode{<script type="text/javascript" src="underlinesec.js"></script>\Hnewline}
}
\begin{document}
\EndPreamble
浏览器中的结果:
由于使用了比例字体,所以不适合,但下划线长度是正确的