是否可以使用 skak 包生成 epub 或 mobi 格式的文档?

是否可以使用 skak 包生成 epub 或 mobi 格式的文档?

我使用 skak 生成了一本精美的 PDF 格式的国际象棋书。不幸的是,亚马逊 Kindle 无法很好地导入 PDF。因此,我必须制作一本 Kindle 友好格式的书,例如 epub。

是否可以使用相同的 latex 源文档来生成 epub?如果不行,是否有其他 latex 包可以帮助生成国际象棋书的 epub 文档?

这是最小示例文档:

\documentclass[a4paper,11pt,oneside]{book}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
\hypersetup{
    colorlinks=true,
    linkcolor=[RGB]{41,41,41},
    filecolor=magenta,      
    urlcolor=cyan,
    pdftitle={Chess},
    bookmarks=true,
}
\usepackage[ps]{skak}
\showmoverOn
\begin{document}

\frontmatter
\title{My title}
\maketitle                
\tableofcontents                        
\mainmatter                             
\author{Sudheer}

\chapter{Introduction}
\newgame
\mainline{1.e4 c5 2.Nf3 g6 3.Bc4 Bg7 4.Ng5 e6}
\showboard

\end{document}

我正在按照以下步骤进行编译:

 latex minimum.tex 
 dvips minimum.dvi 
 ps2pdf minimum.ps

答案1

您可以使用tex4ebook它来创建ePubmobi电子书。它用于tex4ht转换。tex4ht不支持skak开箱即用的软件包,但它易于配置,因此我们可以自己添加支持。

需要解决两个问题:文本中的棋子和棋盘。棋子可以转换为 Unicode 字符,棋盘必须转换为图像。

图形使用特殊字体,需要在 中进行配置tex4ht。将以下文本另存为SkakNew.htf并将其放在文档目录中:

SkakNew  32 121
'' ''     32
'!' ''     33
'”' ''     34
'#' ''  35
'$' ''  36
'%' ''  37
'&' ''  38
'’' ''     39
'(' ''  40
')' ''  41
'*' ''  42
'+' ''  43
',' ''  44
'-' ''  45
'.' ''  46
'/' ''     47
'0' ''  48
'1' ''  49
'2' ''  50
'3' ''  51
'4' ''  52
'5' ''  53
'6' ''  54
'7' ''  55
'8' ''  56
'9' ''  57
':' ''  58
';' ''  59
'¡' ''     60
'=' ''  61
'¿' ''     62
'?' ''  63
'@' ''  64
'→' ''  65
'♗' ''  66
'↑' ''  67
'⊙' ''  68
'△' ''  69
'□' ''  70
'⇗' ''  71
'⇔' ''  72
'⊞' ''  73
'╳' ''  74
'♔' ''  75
'⟂' ''  76
'≪' ''  77
'♘' ''  78
'≫' ''  79
'Ⅱ' ''  80
'♕' ''  81
'♖' ''  82
'>' ''  83
'⊕' ''  84
'○' ''  85
'⇆' ''  86
'W' ''  87
'×' ''  88
'Y' ''  89
'Z' ''  90
'[' ''  91
'“' ''     92
']' ''  93
'ˆ' ''     94
'˙' ''     95
'‘' ''     96
'⧉' ''  97
'⌓' ''  98
'±' ''  99
'⦂' ''  100
'∓' ''  101
'⩲' ''  102
'⩱' ''  103
'h' ''  I cannot find it, it is plus followed by minus
'i' ''  minus followed by plus
'=' ''  106
'k' ''  107
'l' ''  108
'#' ''  109
'n' ''  110
'o' ''  111
'p' ''  112
'q' ''  113
'r' ''  114
's' ''  115
't' ''  116
'u' ''  117
'v' ''  118
'w' ''  119
'x' ''  120
'y' ''  121
SkakNew  32 121

可以使用以下配置请求棋盘的图像。将其另存为skak.4ht并将其保存到文档目录中:

\NewConfigure{SkakBoard}{2}

\pend:def\showboard{\a:SkakBoard}
\append:def\showboard{\b:SkakBoard}

\Configure{SkakBoard}{\Picture+{}}{\EndPicture}

\endinput

它只是修补命令\showboard以包含tex4ht将封闭内容转换为图像的特殊命令。

您可以使用以下命令编译您的文档mobi。请注意,您需要kindlegen安装:

 tex4ebook -f mobi  minimum.tex

结果如下,在 Calibre 中显示:

在此处输入图片描述

为了获得更好的图片质量,您可以尝试在文件中添加以下行skak.4ht(之前\endinput):

\Configure{Picture}{.svg}

它将以以下格式请求图形svg

在此处输入图片描述

最后一点:我得到了无效ePub文件,因为您\author在之后使用了maketitle,所以您应该将它放在它之前。

编辑:

如果您想要使用更多打印到一个画布的命令,您需要将它们括在自定义环境中,其内容将转换为图像:

\documentclass[a4paper,11pt,oneside]{book}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
\hypersetup{
    colorlinks=true,
    linkcolor=[RGB]{41,41,41},
    filecolor=magenta,      
    urlcolor=cyan,
    pdftitle={Chess},
    bookmarks=true,
}
\usepackage[ps]{skak}
\showmoverOn
\newenvironment{mymoves}{}{}
\begin{document}

\frontmatter
\title{My title}
\author{Sudheer}
\maketitle                
\tableofcontents                        
\mainmatter                             

\chapter{Introduction}
\newgame
\mainline{1.e4 c5 2.Nf3 g6 3.Bc4 Bg7 4.Ng5 e6}
\begin{mymoves}
\showboard
\printarrow{a1}{a8}
\end{mymoves}

\end{document}

这里最重要的部分是:

\begin{mymoves}
\showboard
\printarrow{a1}{a8}
\end{mymoves}

您可以mymoves在配置文件中配置环境:

\Preamble{xhtml}
\Configure{Picture}{.svg}
\ConfigureEnv{mymoves}{\Picture*{}}{\EndPicture}{}{}
\begin{document}

\EndPreamble

注意,这个示例似乎需要使用 SVG 输出,似乎dvipng不支持某些 PostScript。

结果:

在此处输入图片描述

相关内容