我使用 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
它来创建ePub
或mobi
电子书。它用于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。
结果: