4

我写关于国际象棋的文章。我经常需要使用名为 FEN 的标准格式来描述国际象棋的位置,并希望它能够自动转换为 png 图像,并且当我将 org 文档导出为 LaTeX 或 html 时,要内联的图像。我认为这是可以做到的,因为 ditaa 似乎也有类似的工作方式。

例如,使用 FEN 字符串“8/pppr1kpp/8/8/8/5P2/PPP1RKPP/8 w - - 0 1”作为输入,我创建了一个名为 chessboard.tex 的 tex 文件:

\documentclass[border={0 0 3 0}, convert={density=150}]{standalone}
\usepackage{xskak}
\usepackage{chessboard}
\usepackage{chessfss}
\usepackage{fontspec}
\begin{document}

\setchessboard{normalboard, showmover=true, moverstyle=triangle, label=false}
\setboardfontfamily{merida}

\fenboard{8/pppr1kpp/8/8/8/5P2/PPP1RKPP/8 w - - 0 1} \chessboard

\end{document}

其中,使用 shell 命令 $> xelatex --shell-escape chessboard.tex 生成以下 png 图像(由于使用了独立包)。 在此处输入图像描述

我怎样才能自动化这个过程,这样我就可以在一个组织文件中放入类似的东西

#+BEGIN_SRC chessfen
8/pppr1kpp/8/8/8/5P2/PPP1RKPP/8 w - - 0 1
#+END_SRC

上述过程是否自动化?

4

2 回答 2

2

Something like this?

#+title: Chess
#+startup: inlineimages
#+property: header-args:latex+ :imagemagick yes :iminoptions -density 300 -resize 400
#+property: header-args:latex+ :headers '("\\usepackage{chessboard}\\usepackage{xskak}\\usepackage{chessfss}") :border 1pt

* Chess

#+begin_src latex :file chess.png :results raw
\setchessboard{normalboard, showmover=true, moverstyle=triangle, label=false}
\fenboard{8/pppr1kpp/8/8/8/5P2/PPP1RKPP/8 w - - 0 1} \chessboard 
#+end_src
于 2014-10-13T02:45:20.127 回答
0

在手动安装必要的 LaTeX 包(可以通过在错误日志输出中检查)之后,对 rvf0068 答案的修改对我有用:

#+property: header-args:latex+ :headers '("\\usepackage{chessboard}\\usepackage{xskak}\\usepackage{chessfss}") :border 1pt

#+header: :imagemagick "t"
#+header: :results file raw
#+header: :exports results
#+header: :fit yes :border 0.5cm
#+header: :iminoptions -density 600 :imoutoptions -geometry 600
#+begin_src latex :file alburt_vs_kasparov_1978.png
\setchessboard{normalboard, showmover=false, moverstyle=triangle, label=false}
\fenboard{8/pppr1kpp/8/8/8/5P2/PPP1RKPP/8 w - - 0 1} \chessboard
#+end_src

# Local Variables:
# org-latex-pdf-process: ("xelatex -shell-escape -interaction=nonstopmode -output-directory=%o %f"
#                         "xelatex -shell-escape -interaction=nonstopmode -output-directory=%o %f"
#                         "xelatex -shell-escape -interaction=nonstopmode -output-directory=%o %f")
# End:
于 2021-01-27T10:30:36.813 回答