| GNU TeXmacs | |
|---|---|
Windows 11で動作するTeXmacs 2.1.1 | |
| 開発者 | GNUプロジェクト |
| 安定版リリース | 2.1.4 [ 1 ] |
| リポジトリ | |
| 書かれた | C++ |
| オペレーティング·システム | Linux、Windows、macOS、Unix系[ 2 ] |
| プラットフォーム | x86、x86-64 |
| タイプ | ワードプロセッサ |
| ライセンス | GPL-3.0以降[ 3 ] |
| Webサイト | www.texmacs.org |
GNU TeXmacs ( T e X macsと表記されることもある)は、 GNUプロジェクトの科学技術ワードプロセッサおよび組版コンポーネントである。元々はTeX機能を備えたGNU Emacsの派生版として開発されたが、TeXフォントを使用しながら、それらのプログラムとコードを共有していない。[ 4 ] Joris van der Hoevenと開発者グループによって開発・保守されている。 [ 5 ]このプログラムはWYSIWYGユーザーインターフェースを備えた構造化文書を生成する。ユーザーは新しい文書スタイルを作成できる。このエディタは、プロフェッショナルな外観の文書を公開するための高品質な組版アルゴリズムとTeXフォントおよびその他のフォントを提供する。
構造化WYSIWYGエディタおよび文書作成システムとして、TeXmacsは、Interleaf(最初のリリース1985年)、Framemaker(1986年)、SoftQuad Author/Editor(1988年)、[ 6 ] Lilac、[ 7 ] Grif(1991年)、[ 8 ] Thot [ 9 ]などの以前の構造化文書エディタに似ています。また、論理的に表現された複雑な印刷構造の対話型編集に関する学術研究もありました。[ 10 ] [ 11 ]
2000年代と2010年代には、構造化テキストの対話型編集への関心が高まり、人文科学の研究者向けのプログラムの開発が促進されました。その一例がCWRC-Writerです。これは、「WYSIWYGに近い編集と、マークアップの意味のある視覚的表現による学術テキストの充実」を備えたビジュアルXMLエディターです。[ 12 ]
編集と文書作成の世界の別の側面では、 LaTeXで記述された構造化テキストを視覚的に操作するためのプログラムがLyXです。これは WYSIWYG 編集ではなく、構造の視覚的表現 ( WYSIWYM )を目的としています。

多くのWYSIWYGエディタ ( Microsoft Wordなど)と同様に、作成者は画面上で文書を操作し、同様に見える紙のコピーを印刷します。TeXmacs の目標は、WYSIWYG エディタを提供しながらも、美しく整えられた組版結果を持つ正しく構造化された文書の作成を可能にすることです。その名前にもかかわらず、TeXmacs はTeXやLaTeXのフロントエンドではありません。[ 13 ]しかし、TeXmacs 文書はTeXまたは LaTeX に変換できます。LaTeX も (ある程度) インポート可能で、HTML、Scheme、Verbatim、XMLからのインポートとエクスポートが提供されています。[ 14 ] HTML エクスポートは CSS でスタイル設定できます (バージョン 1.99.14 以降)。MathML用のコンバータもあり、TeXmacs は印刷用にPDFとPostScriptを出力できます。 [ 15 ]
TeXmacsは数式、表、画像、相互参照、引用を扱うことができます。Maxima 、FriCAS、SageMathといった多くのコンピュータ代数システムのフロントエンドとして使用でき、それらの出力の一部をTeXmacsの組版に組み込むことができます。また、TeXmacsはプログラムのカスタマイズや拡張機能の作成のために、 Guileと呼ばれるScheme拡張言語もサポートしています。
プレゼンテーションモードと小型の製図エディタも搭載しており、スプレッドシート機能を備えた完全な科学オフィススイートへと進化させる計画があります。スプレッドシートの実装はバージョン1.99.12から開始されており、TeXmacsのスプレッドシートでは、プラグイン(PythonやMaximaなど)を利用してセルの値を計算できます。
TeXmacsは現在、 Linux、FreeBSD、Cygwin、Haiku、macOSを含むほとんどのUnixベースアーキテクチャで動作します。Cygwin版に加え、Microsoft Windows向けのネイティブポートも利用可能です。
TeXmacsエディタでは、文書の構造と外観が同時に表現されます。[ 16 ]文書の論理単位をネストされたフォーカスフレームで囲むことで、カーソルの動きに応じて色付きの手がかりが表示され、構造がユーザーにわかりやすくなります。[ 17 ]カーソル付近の構造の詳細な説明は、エディタウィンドウのフッターに表示され、左右の矢印キーで細かく選択できます。[ 16 ]エディタでは、テキストモードとソースモードの編集を切り替えることができ、マクロの作成もサポートされています。ソースエディタは構文を認識します。[ 18 ]
TeXmacsは、キーボードの押下シーケンスを記号にマッピングすることで、数式の入力を容易にします。例えば、記号は と入力することで入力できます。 =>
一部の記号にはこのような表記がありません(例えば)。これらはキーを使って入力できます(例えば、 のキーは です)。このキーボード入力は、ポイントアンドクリックメニューを提供することが多い他の数式エディタとは異なります。[ 19 ]Tab ↹=>Tab ↹Tab ↹
TeXmacsをバッチプロセッサ(LaTeXの通常の動作モード)として使うことも可能です。その場合、 Xの仮想フレームバッファを使用することで、処理中に不要なウィンドウが開くのを回避できます。例えば、以下のコマンドを 実行します。
$ xvfb-run texmacs --convert article.tm article.pdf --quit TeXmacs ドキュメント「article.tm」から PDFファイル「article.pdf」を生成します。
すべてのTeXmacs文書あるいは文書フラグメントはツリーとして考えることができます(ツリーの概念はSGMLマークアップ言語にも存在し、TexmacsフォーマットはSGMLに似ています)。例えば、以下のツリーは
式を表す
(ここでは、Wikipedia で使用される TeX マークアップを使用して記述されています)。これは、TeXmacs 独自のタイプセット エンジンによってタイプセット式に変換され、ここでは画像として挿入されています。
TeXmacsツリーは、TeXmacsファイル内では文字列として表現され、TeXmacsエディタ内では文書のタイプセット表現とその対話的な動作として表現されます。[ 20 ] TeXmacsツリーの画面上の表現では、カーソルの動きがツリー内の動きを表します。ディスク上では、TeXmacs形式の表現は3種類存在します。ネイティブ表現、XML表現、そしてScheme S式による表現です。Scheme表現はSchemeプログラムとのインターフェースに便利です。
組版処理はTeXmacsツリーをボックスに変換する。[ 21 ] TeXmacsツリーの評価は、プリミティブの縮約、つまりマクロ適用の評価によって行われる。組版プリミティブは非常に高速に設計されており、エディタに組み込まれている。プリミティブの多くは、組み込みの環境変数によってレンダリングをカスタマイズできる。スタイルシート言語では、組み込みプリミティブの上にマクロとして新しいプリミティブを記述することができる。
TeXmacs は、「改行」用のグローバル アルゴリズム ( TeX のアルゴリズムに類似) を使用し、さらに「ページ区切り」用のグローバル アルゴリズムを使用します。ページ区切りアルゴリズムでは、浮動オブジェクト (図、表、脚注) と複数列のコンテンツが考慮されます。
ドキュメントはネイティブマクロシステムとGuile-Schemeを介して制御できます。エディターのメニューやキーバインドをカスタマイズしたり、ドキュメントツリーをプログラム的に操作したりすることも可能です。
TeXmacsのマクロは、TeX/LaTeXと同様に構造化された入力手段を提供し、即座にタイプセットされ、同時に編集可能な入力フィールドを維持します。マクロはソースコードで記述されますが、WYSIWYGエディタは視覚的な構造を構文に変換することでマクロの作成を支援します。[ 22 ]
SchemeはGNU Guileを介してTeXmacsに組み込まれており、エディタ自体は次のように制御できる。[ 21 ]メニューとキーバインドをカスタマイズできる。SchemeコマンドはTeXmacs文書内で対話的に呼び出すことができ、コマンドラインから、およびTeXmacsマクロ内から呼び出すことができる。TeXmacsツリーは、さまざまな形式でSchemeに渡すことができる。「パッシブツリー」(リスト上の標準Schemeルーチンを使用してコンテンツを直接操作するのに便利)、「アクティブツリー」(グローバルドキュメントツリー内のツリーの位置を追跡し、プログラムでドキュメントを変更するために使用できる)、および「ハイブリッド」表現である。
グラフィックスオブジェクトもTeXmacs形式の一部であり、Schemeからプログラム的に操作できます。TeXmacs Schemeセッションで生成されたTeXmacsグラフィックスの例と、その画像を生成したセッションを以下に示します。Schemeセッションでプログラム的に生成された画像は、ドキュメントにツリーとして挿入されるため、内部描画エディタを使用して編集することもできます。また、SchemeスクリプトはexternTeXmacsマクロを通じて実行することもできます。この場合、ドキュメントではタイプセットされたマテリアルのみが使用可能であり、直接編集することはできません(変更はSchemeコード内で行う必要があります)。
Scheme ] ( define pi ( acos -1 )) ;; 2 つの座標を使用して TeXmacs グラフィック形式で点を定義する関数Scheme ] ( define ( pt x y ) ' ( point , ( number->string x ) , ( number->string y ))) ;;ポイントを設定しますScheme ] ( define xC ( - ( * 2 ( cos ( / pi 3 ))))) Scheme ] ( define yC ( * 2 ( sin ( / pi 3 )))) Scheme ] ( define pA ( pt -2 0 )) Scheme ] ( define pB ( pt 2 0 )) Scheme ] ( define pC ( pt xC yC )) Scheme ] ( define tA ( pt -2.3 -0.5 )) Scheme ] ( define tB ( pt 2.1 -0.5 )) Scheme ] ( define tC ( pt ( - xC 0.2 ) ( + yC 0.2 ))) ;;グラフィックスを生成するScheme ] ( stree->tree ' ( "gr-geometry" (タプル"geometry" "400px" "300px" "center" ) ( graphics ( "color" " blue " ( text-at ( TeXmacs ) , ( pt -0.55 -0.75 ))) ( "color" " black" ( arc , pA , pC ,pB )) ( 「色」が「黒」(線、pA 、pB )) ( "色"が"赤"の場合(斜線、pA 、pB 、pC )) ( "色"が"黒"の場合(テキストアット"A" 、tA )) ( "色"が"黒"の場合(テキストアット"B" 、tB )) ( "色"が"黒"の場合(テキストアット"C" 、tC )))))
TeXmacs には多くのテクノロジーをサポートするバックエンドがあります。
プラグインの出力は、「実行可能スイッチ」を使用してTeXmacs文書内に埋め込むことができます。[ 23 ]この方法では、システムへの特定の入力とそれに対応する出力を切り替えることができ、文書にシームレスに溶け込みます。
TeXmacs は LaTeX のフロントエンドではないため、LaTeX の(かなり大きな)サブ言語に対してのみ正しい変換を保証できます。