如何从电子书的标题中删除“章节”一词:tex4ebook

如何从电子书的标题中删除“章节”一词:tex4ebook

我正在编写一本卡纳达语的电子书,我想从电子书的标题中删除“章节”一词。

电子书的输出如第一张图片所示电子书输出。但是,我希望它看起来像第二张图片所需输出

先感谢您。

答案1

理论上,您只需更改文件\chaptername中的宏即可.cfg

\Preamble{xhtml}
\begin{document}
\let\chaptername\relax
\EndPreamble

这可以正常工作,但是我发现这个例子不起作用:

% !TeX program = xelatex
\documentclass[justified,12.5pt]{book}
\usepackage{float}
\def\linenumberfont{\normalfont}
\usepackage{polyglossia}
\setmainfont[Script=Kannada]{Tunga}%{NudiUni01K.ttf}
\setmainlanguage{kannada}


\begin{document}
%\let\chaptername\relax

\chapter{ಪೀಠಿಕೆ}
ಆಧುನಿಕ ಬದುಕಿನ ಜ್ಞಾನ ವಿಜ್ಞಾನ ಕ್ಷೇತ್ರದಲ್ಲಿನ ಅದ್ಭುತ ಅವಿಷ್ಕಾರಗಳಲ್ಲೊಂದಾದ ಮಾಹಿತಿ ತಂತ್ರಜ್ಞಾನದ ಒಂದು ವಿನೂತನ ಪರಿಕಲ್ಪನೆ  ವಿಕಿಪೀಡಿಯಾ. ಹವಾಮಿ ಭಾಷೆಯಲ್ಲಿ ವಿಕಿ
ಎಂದರೆ ಶೀಘ್ರ ಅಥವಾ ತ್ವರಿತಗತಿ ಎಂದರ್ಥ. ಇಂಗ್ಲೀಷಿನಲ್ಲಿ ಎನ್ ಸೈಕ್ಲೊಪೀಡಿಯಾ ಎಂದರೆ ವಿಶ್ವಕೋಶ ಎಂದರ್ಥ. ಇವೆರಡೂ ಶಬ್ದಗಳನ್ನು ಸಂಯೋಜಿಸಿ 
ವಿಕಿಪೀಡಿಯಾ ಎಂಬ ಗಣಕೀಕೃತ ವಿಶ್ವಕೋಶದ ಮಾದರಿಯಲ್ಲಿ ಇದನ್ನು ಅಭಿವೃದ್ಧಿಗೊಳಿಸಲಾಗಿದೆ. ಕನ್ನಡದಲ್ಲಿ ಇದನ್ನು 'ತ್ವರಿತ ವಿಶ್ವಕೋಶ' ಎಂದು ಹೆಸರಿಸ ಬಹುದು. 
ಇದೊಂದು ಬಹುಭಾಷೀಯ ಹಾಗೂ ಅಂತರ್ಜಾಲ ಆಧಾರಿತ ವಿಶ್ವಕೋಶವಾಗಿದ್ದು,ನಿರಂತರವಾಗಿ ಪರಿಷ್ಕರಣಗೂಳ್ಳಬಲ್ಲ ಮಾಹಿತಿ ವಿತರಣ ಸಾಧನವಾಗಿದೆ.

\end{document}

我猜测章节名称是由 Polyglossia 在开始文档时设置的,所以它会覆盖我们的重新定义。

无论如何,由于您还想更改章节编号,最简单的方法是使用make4ht构建文件。将以下代码保存为mybuild.lua

local domfilter = require "make4ht-domfilter"
local number_table = {
  ["0"] = "೦",
  ["1"] = "೧",
  ["2"] = "೨",
  ["3"] = "೩",
  ["4"] = "೪",
  ["5"] = "೫",
  ["6"] = "೬",
  ["7"] = "೭",
  ["8"] = "೮",
  ["9"] = "೯",
  
}


local process = domfilter {
  function(dom)
    -- remove <br> elements from chapter
    for _, br in ipairs(dom:query_selector "h2 br") do
      local space = br:create_text_node(" ")
      br:replace_node(space)
    end
    -- -- remove text from chapter mark and convert numbers
    for _, mark in ipairs(dom:query_selector ".titlemark") do
      local titlemark = mark:get_text() or ""
      local number = titlemark:match("([%d%.]+)") or ""
      -- replace arabic number to kannada number
      local newnumber = number:gsub("%d", number_table)
      -- crete new HTML mode
      -- add space that will separate number from rest of the chapter title
      local numbernode = mark:create_text_node(newnumber .. " ")
      -- replace old text
      mark._children = {numbernode}
    end
    dom:traverse_elements(function(el)
      for _, child in ipairs(el:get_children()) do
        if child:is_text() then
          -- replace numbers in all texts
          child._text = child._text:gsub("%d", number_table)
        end
      end
    end)
    return dom
  end

}

Make:match("html$", process)

我们使用 LUaXML DOM 库来处理 HTML,查找所有章节编号并将其转换为正确的形式。

结果如下:

在此处输入图片描述

使用编译

tex4ebook -e mybuild.lua -x filename.tex

相关内容