0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows 11 + WSL2ならKeTCindyがDockerコンテナ上で簡単に動かせるらしい

Last updated at Posted at 2025-02-09

はじめに

どうも,KeTCindyはいいぞおじさんと申します.本稿では,動的幾何学ソフトCinderellaを用いて作成された図形を${\rm\LaTeX}$に出力できるKeTCindyをDockerコンテナ上で動作させる方法を紹介します.

この記事に書いてあること

  • KeTCindyをDockerコンテナ上で動かし,出力されたPDFファイルを閲覧する方法

この記事に書いていないこと

  • WSL2やDockerの使用方法
  • Windows 11 + WSL2以外でのCinderellaの動かし方

KetCindyとは

冒頭で述べたように,KeTCindyとは動的幾何学ソフトCinderellaを用いて作成された図形を${\rm\LaTeX}$に出力するためのシステムのことです.「GUIアプリケーションで作成した図形を${\rm\LaTeX}$に取り込む」というだけであればいくつか似たようなシステムは存在します.筆者が個人的に一番すごいと感じるのは,陰線処理された3次元図形を出力できることです(下の図のようなイメージ).

image.png

その他のサンプルや利用方法に関しては公式ホームページ1を参照してください.また,GitHubリポジトリ2にもたくさんの資料があります.

Dockerコンテナ上で動かす方法は公式ではサポートされていないようですが,Linux向けの導入方法をDockerfile上で再現することで比較的容易に導入できたので紹介します.

動作環境

筆者が使用している環境です.これ以外の環境(特にWindows 11 + WSL2の部分)では,Dockerコンテナとして導入したGUIアプリケーションを動かすのに多少の苦労が伴うと思われます.

  • Windows 11 Professional
  • WSL2 (Ubuntu 22.04 LTS)
  • Rancher Desktop

導入方法

導入は,大きく分けて以下のステップで行います.

  1. Dockerfile作成,コンテナ作成
  2. 初期設定

後者の初期設定はDockerfileへの記述でスキップできそうな気がしましたが,難しそうだったので断念しました.
よいアイデアがあれば教えてください.

Dockerfile作成

以下のようなDockerfileを作成します.

Dockerfile
FROM texlive/texlive:latest

# 必要なパッケージをインストール
RUN apt-get update && apt-get install -y \
	wget \
	tar \
	jq \
	r-base \
	maxima \
	gcc \
	evince \
	pkexec \
	sudo

# Cinderellaのアーカイブをダウンロードして解凍
RUN wget https://beta.cinderella.de/Cinderella-3.0b.2089.tar.gz -O /tmp/Cinderella-3.0b.2089.tar.gz \
	&& tar -xzf /tmp/Cinderella-3.0b.2089.tar.gz -C /opt \
	&& rm /tmp/Cinderella-3.0b.2089.tar.gz

# /opt/cinderellaにパスを通す
ENV PATH="/opt/cinderella:$PATH"

# keTcindyの最新リリースをダウンロードして解凍
RUN LATEST_RELEASE=$(wget -qO- https://api.github.com/repos/ketpic/ketcindy/releases/latest | jq -r '.tag_name') \
	&& wget https://github.com/ketpic/ketcindy/archive/$LATEST_RELEASE.tar.gz -O /tmp/ketcindy-$LATEST_RELEASE.tar.gz \
	&& tar -xzf /tmp/ketcindy-$LATEST_RELEASE.tar.gz -C $HOME \
	&& rm /tmp/ketcindy-$LATEST_RELEASE.tar.gz
  1. KetCindyの動作には${\rm\LaTeX}$が導入されている必要があります.ここでは,DockerイメージとしてTeX Liveを導入しています.
  2. 次に,apt-getコマンドを用いて必要なパッケージを導入しています.wgetからjqまではDockerfile内に記載した後段の作業を行うため,r-baseからevinceまではKetCindyの動作のため,pkexecsudoはKetCindyが内部で使用しているスクリプトを動作させるために導入しています.
  3. 次に行うのはCinderellaの導入です.Cinderellaはapt-getコマンドでは導入できないため,公式ホームページ3から取得しています.バージョン番号の部分は適宜書き換えてください.
  4. Cinderellaの導入後はパスを通しておきます.必須というわけではありませんが,あると便利でしょう.パスを通さずにCinderellaを起動する場合は/opt/cinderella/Cinderellaとコマンドを叩いてください.
  5. 最後に,KeTCindyのGitHubリポジトリから最新リリースを取得します.GitHubのAPIを利用して最新のタグを取得し,そのタグ名のリリースを取得するという流れになっています.

Dockerfileを作成した後はDockerコンテナをビルドし,コンテナの中に入りましょう.入り方は自由ですが,筆者はVisual Studio CodeのRemote Container機能を利用しています.

初期設定

作成したコンテナにログインした状態で,ターミナル上で以下のコマンドを実行してCinderellaを起動します:

$ Cinderella

すると,Cinderellaの画面が立ち上がります4

image.png

Cinderellaの画面から「File」→「Open」を選択し,~/Ketcindy-<tag名>/doc以下にあるketcindysettings.cdyを開きます.

image.png

「Lang」「Tex」「Grahpic」ボタンはクリックするたびに値が切り替わるので,好みのものに変えます.ここではそれぞれ「j」「lualatex」「tikz」としました.

真ん中の「TexLive」「Kettex」「Ketjs」は適切なものを選択します.本稿ではTeX Liveを使用しているので,「TexLive」を選択します.

右側の「Mkinit」「Update」「Work」については,この順にボタンをクリックすることで初期設定用のスクリプトが走ります.この環境では途中の「Update」をクリックしたときにエラーが発生しますが,特に気にせず実行してください.

image.png

「Work」ボタンまでクリックしたのち,先ほど「Update」ボタンクリック時にエラーが発生して行えなかった処理を手動で実行します.

$ cd ~/ketcindy-<tag名>/doc/fig
$ R --vanilla --slave < update.r

これで初期設定は完了です.

動作確認

初期設定時に生成されるワークディレクトリには,いくつかのテンプレートファイルが同梱されています.Cinderellaの画面から「File」→「Open」を選択し,~/Ketcindy<年月日>/templates以下から適当な.cdyファイルを選択して開きます.

image.png

右上の「Figure」ボタンをクリックしてPDFファイルが開かれれば環境構築成功です.

image.png

最終成果物としてのPDFファイルだけでなく,途中の.texファイルもtemplates/fig以下に格納されており,取得可能です.

ちなみに09surfaceC.cdyでは「Scripting」→「Edit Scripts」からスクリプトエディタを開き,4行目のXyzax3data関数の呼び出しにオプション引数a1を加えると,座標軸に矢じりを生やすことができます5.Cinderella上の画面でも生成されたPDFでも矢じりが生えています.

image.png

image.png

image.png

  1. https://s-takato.github.io/ketcindyorg

  2. https://github.com/ketpic/ketcindy

  3. https://beta.cinderella.de

  4. さらっとやってますが,ウインドウが平然とWIndowsのものとして出てくるのは実はとてもすごいことです.

  5. 公式ドキュメントにはデフォルトで矢じりが生えると書いてあったのですが,筆者の環境では明示的に指定しないと生えませんでした.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?