Можно ли использовать пакет skak для создания документа в формате epub или mobi?

Можно ли использовать пакет skak для создания документа в формате epub или mobi?

Я использую skak для создания прекрасной шахматной книги в формате PDF. К сожалению, Amazon Kindle не очень хорошо импортирует PDF. Поэтому мне приходится делать книгу в формате Kindle, дружественном к 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файл, потому что вы использовали \authorafter 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.

Результат:

введите описание изображения здесь

Связанный контент