使用 xskak 和 tex4ebook

使用 xskak 和 tex4ebook

有谁知道如何让这些包一起工作。

最小示例(test.tex)。

\documentclass[12pt]{article}
\usepackage{xskak}
\begin{document}
\newchessgame[id=main]
\chessboard
\end{document}

tex4ebook 的配置文件是 sample.cfg

\Preamble{xhtml}
\CutAt{section}
\begin{document}
\EndPreamble

运行 tex4ebook -c sample test.tex 出现错误

(c:\miktex29\tex\latex\pgf\compatibility\pgfcomp-version-0-65.sty
! Undefined control sequence.
\pgfsys@svg@newline ->\Hnewline

l.190   \pgfusepathqfill}

有没有什么办法解决这一问题。

谢谢。

答案1

你得到的错误是已知问题。更有趣的问题是如何实际支持xskak包。您可能希望支持至少两个功能:棋子字体和棋盘。

您可以使用以下字体定义文件获得对国际象棋图形的支持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 can't 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

稍微困难的是支持棋盘。tex4ht可以使用命令将任何 LaTeX 代码转换为图片\Picture*{} ... \EndPicture。我们只需要重新定义\chessboard命令来合并它们,我尝试这样做没有成功。也许 Ulrike 会知道。

无论如何,作为一种解决方法,我们可以定义新的命令,比如说,当用编译文档时,\mychessfigure它将调用\chessfigure命令。\Picturetex4ht

在文档序言中写明:

\newcommand\mychessboard[1][]{\chessboard[#1]} 

并修改您的sample.cfg

\Preamble{xhtml}
\CutAt{section}
\begin{document}
\renewcommand\mychessboard[1][]{\HCode{<div class="chessboard">}\Picture*{}\chessboard[#1]\EndPicture\HCode{</div>}}
\EndPreamble

您需要在文档中将\chessboard命令更改为:\mychessboard

\documentclass[12pt]{article}
\usepackage{xskak}
\newcommand\mychessboard[1][]{\chessboard[#1]}
\begin{document}
\newchessgame[id=main]
\mychessboard

\newchessgame
\mainline{1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6}
\xskakset{moveid=2w}

\mychessboard[setfen=\xskakget{nextfen}]\\[1ex]
 Position after 2.\,\xskakget{lan}
\end{document}

正如我所说,这不是最好的解决方案,只是一种解决方法,这应该在chessboard包 配置中进行处理chessboard.4ht

结果:

在此处输入图片描述

相关内容