Org模式:描述一个国际象棋局面并自动生成棋盘图像

5

我写关于棋类的文章。我经常需要用一种名为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图像(感谢使用standalone包)。 enter image description here

我该如何自动化这个过程,以便我可以在org文件中输入类似于

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

并且想要自动化上述过程吗?
3个回答

2

你是要类似这样的翻译吗?

#+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

1
谢谢你的回答。但是它对我没有用,LaTeX源代码会直接复制到输出中。再仔细阅读了一些资料后,我认为我需要为org-babel编写一种新语言,我正在尝试做这件事。 - engineerX

0

我直接使用LaTeX环境来排版棋谱,没有src块:

Then, the white brings the king

- to the closest rank to the opposing king and
- to the file one next to that of the opposing king toward the center.

\begin{center}
  \fenboard{7k/R7/8/8/8/8/8/7K w - - 0 2}
  \mainline{2. Kg2 Kf8 3. Kf3 Ke8 4. Ke4 Kd8 5. Kd5 Kc8 6. Kd6}
  \par
  \showboard
\end{center}

0

我对rvf0068的回答进行了修改,手动安装了必要的LaTeX包(可以通过检查错误日志输出找到),这对我很有效。

#+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:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接