Skip to content

Commit 3fcd483

Browse files
energy-dia:0.1.0 (#3425)
1 parent 5769e3b commit 3fcd483

File tree

12 files changed

+1916
-0
lines changed

12 files changed

+1916
-0
lines changed

packages/preview/energy-dia/0.1.0/LICENSE

Lines changed: 674 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
# Energy-Dia
2+
3+
[English version](README.md)
4+
5+
**Energy-Dia**は、化学・物理学の専門的なエネルギー図を作成するための、パワフルで直感的なTypstライブラリです。CeTZをベースに構築され、原子軌道図、分子軌道図、バンド構造図を簡単かつ美しく描画できます。
6+
7+
## 特徴
8+
9+
- **原子軌道図 (AO)**: 縮退度やスピン状態に対応したエネルギー準位と電子配置を視覚化
10+
- **分子軌道図 (MO)**: 軌道の混成と電子分布を含む包括的なMO図を作成
11+
- **バンド構造図**: 最小限のコードで素早くバンド構造をプロット
12+
- **カスタマイズ可能**: 図のサイズ、ラベル、スタイルを完全にコントロール
13+
- **シンプルな構文**: 学習しやすく使いやすい直感的なAPI
14+
15+
## クイックスタート
16+
17+
### インストール
18+
19+
```typst
20+
#import "@preview/energy-dia:0.1.0": *
21+
```
22+
23+
### 基本例
24+
25+
```typst
26+
#ao(
27+
width: 10,
28+
height: 10,
29+
(energy: -10, electrons: 2, caption: "1s"),
30+
(energy: -3, electrons: 2, caption: "2s"),
31+
(energy: -1, electrons: 4, degeneracy: 3, up: 3, caption: "2p"),
32+
)
33+
```
34+
35+
## 使用ガイド
36+
37+
### 原子軌道図 (AO)
38+
39+
電子配置を含む原子軌道のエネルギー準位図を作成します。
40+
41+
#### 基本構文
42+
43+
```typst
44+
#ao(
45+
width: 10,
46+
height: 10,
47+
name: "C",
48+
exclude-energy: false,
49+
(energy: -10, electrons: 2, caption: "1s"),
50+
(energy: -3, electrons: 2, caption: "2s"),
51+
(energy: -1, electrons: 4, degeneracy: 3, up: 3, caption: "2p"),
52+
)
53+
```
54+
55+
#### パラメータ
56+
57+
**図の設定:**
58+
- `width` (length): 図の幅(デフォルト: 5)
59+
- `height` (length): 図の高さ(デフォルト: 5)
60+
- `name` (string): 表示する原子名(デフォルト: none)
61+
- `exclude-energy` (boolean): エネルギー値を非表示(デフォルト: false)
62+
63+
**軌道準位**(位置引数、各々を辞書として指定):
64+
- `energy` (number): 軌道のエネルギー値
65+
- `electrons` (number): 電子数(デフォルト: 0)
66+
- `degeneracy` (number): 軌道の縮退度(デフォルト: 1)
67+
- `caption` (string): 軌道のラベル(デフォルト: none)
68+
- `up` (number): スピンアップ電子の数(オプション; 指定しない場合、電子はアップとダウンのスピンが交互に配置されます)
69+
70+
---
71+
72+
### 分子軌道図 (MO)
73+
74+
原子軌道から分子軌道が形成される過程を軌道混成とともに視覚化します。
75+
76+
#### 基本構文
77+
78+
```typst
79+
#mo(
80+
width: 15,
81+
height: 10,
82+
names: ("O", $"O"_2$ , "O"),
83+
exclude-energy: false,
84+
atom1: (
85+
(energy: -14, electrons: 2, label: 1, caption: "2s"),
86+
(energy: -5, electrons: 4, degeneracy: 3, up: 3, label: 2, caption: "2p"),
87+
),
88+
molecule: (
89+
(energy: -16, electrons: 2, label: 3, caption: [$1sigma$]),
90+
(energy: -12, electrons: 2, label: 4, caption: [$1sigma^*$]),
91+
(energy: -8, electrons: 2, label: 5, caption: [$2sigma$]),
92+
(energy: -6, electrons: 4, degeneracy: 2, label: 7, caption: [$pi$]),
93+
(energy: -4, electrons: 2, degeneracy: 2, up: 2, label: 8, caption: [$pi^*$]),
94+
(energy: -2, electrons: 0, label: 6, caption: [$2sigma^*$]),
95+
),
96+
atom2: (
97+
(energy: -14, electrons: 2, label: 9, caption: "2s"),
98+
(energy: -5, electrons: 4, degeneracy: 3, up: 3, label: 10, caption: "2p"),
99+
),
100+
(1, 3), (1, 4), (2, 5), (2, 7), (2, 8), (2, 6),
101+
(9, 3), (9, 4), (10, 5), (10, 7), (10, 8), (10, 6)
102+
)
103+
```
104+
105+
#### パラメータ
106+
107+
**図の設定:**
108+
- `width` (length): 図の幅(デフォルト: 5)
109+
- `height` (length): 図の高さ(デフォルト: 5)
110+
- `names` (array): 左側原子、分子、右側原子の名前(デフォルト: ())
111+
- `exclude-energy` (boolean): エネルギーラベルを非表示(デフォルト: false)
112+
113+
**軌道データ:**
114+
- `atom1` (array): 左側原子の軌道
115+
- `molecule` (array): 分子軌道
116+
- `atom2` (array): 右側原子の軌道
117+
118+
各軌道は以下のキーを持つ辞書:
119+
- `energy` (number): エネルギー値
120+
- `electrons` (number): 電子数(デフォルト: 0)
121+
- `degeneracy` (number): 縮退度(デフォルト: 1)
122+
- `caption` (string): ラベル(デフォルト: none)
123+
- `up` (number): スピンアップ電子の数(オプション)
124+
- `label` (number): 接続用の一意識別子
125+
126+
**接続**(位置引数):
127+
`(1, 3)`のようなタプルで、ラベル1と3の軌道を点線で接続します。
128+
129+
**重要:** 各軌道配列(`atom1``atom2``molecule`)は、単一の軌道でも配列でなければなりません。末尾のカンマを忘れずに: `((energy: -5, electrons: 1),)`
130+
131+
---
132+
133+
### バンド構造図
134+
135+
最小限の構文でエネルギー準位図をプロット-バンド構造など軌道の数が多いときに最適
136+
137+
#### 基本構文
138+
139+
```typst
140+
#band(
141+
width: 5,
142+
height: 5,
143+
name: "Si",
144+
include-energy-labels: true,
145+
-5, -4, -3, 0, 1, 2
146+
)
147+
```
148+
149+
#### CSVデータから読み込み
150+
151+
```typst
152+
#let data = csv("test.csv")
153+
#let energies = data.map(row => float(row.at(0))).flatten()
154+
#band(
155+
include-energy-labels: false,
156+
..energies
157+
)
158+
```
159+
160+
#### パラメータ
161+
162+
- `width` (length): 図の幅(デフォルト: 5)
163+
- `height` (length): 図の高さ(デフォルト: 5)
164+
- `name` (string): 表示する物質名(デフォルト: none)
165+
- `include-energy-labels` (boolean): エネルギー値を表示(デフォルト: false)
166+
- 位置引数: エネルギー準位の値
167+
168+
##
169+
170+
### 原子軌道図
171+
172+
![原子軌道図](img/atomic_orbital.png)
173+
174+
### 分子軌道図
175+
176+
![分子軌道図](img/molecular_orbital.png)
177+
178+
### バンド構造図
179+
180+
![バンド構造図](img/band.png)
181+
182+
**完全な実例は[demo.typ](demo/demo.typ)をご覧ください!**
183+
184+
## 依存関係
185+
186+
- **[CeTZ](https://github.com/cetz-package/cetz)** v0.4.2 - 描画ライブラリ(LGPL-3.0)
187+
188+
## ライセンス
189+
190+
このプロジェクトは**GNU General Public License v3.0**の下でライセンスされています。詳細は[LICENSE](LICENSE)を参照してください。
191+
192+
## 貢献
193+
194+
貢献を歓迎します!issueを開いたり、プルリクエストを送信したりしてください。
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
# Energy-Dia
2+
3+
[日本語版](README.ja.md)
4+
5+
**Energy-Dia** is a powerful and intuitive Typst library for creating professional energy diagrams in chemistry and physics. Built on top of CeTZ, it makes drawing atomic orbitals, molecular orbitals, and band structures effortless and beautiful.
6+
7+
## Features
8+
9+
- **Atomic Orbital Diagrams (AO)**: Visualize energy levels and electron configurations with support for degeneracy and spin states
10+
- **Molecular Orbital Diagrams (MO)**: Create comprehensive MO diagrams with orbital mixing and electron distribution
11+
- **Band Structure Diagrams**: Plot band structures quickly with minimal code
12+
- **Customizable**: Full control over diagram size, labels, and styling
13+
- **Simple Syntax**: Intuitive API that's easy to learn and use
14+
15+
## Quick Start
16+
17+
### Installation
18+
19+
```typst
20+
#import "@preview/energy-dia:0.1.0": *
21+
```
22+
23+
### Simple Example
24+
25+
```typst
26+
#ao(
27+
width: 10,
28+
height: 10,
29+
(energy: -10, electrons: 2, caption: "1s"),
30+
(energy: -3, electrons: 2, caption: "2s"),
31+
(energy: -1, electrons: 4, degeneracy: 3, up: 3, caption: "2p"),
32+
)
33+
```
34+
35+
## Usage Guide
36+
37+
### Atomic Orbital Diagrams (AO)
38+
39+
Create energy level diagrams for atomic orbitals with electron configurations.
40+
41+
#### Basic Syntax
42+
43+
```typst
44+
#ao(
45+
width: 10,
46+
height: 10,
47+
name: "C",
48+
exclude-energy: false,
49+
(energy: -10, electrons: 2, caption: "1s"),
50+
(energy: -3, electrons: 2, caption: "2s"),
51+
(energy: -1, electrons: 4, degeneracy: 3, up: 3, caption: "2p"),
52+
)
53+
```
54+
55+
#### Parameters
56+
57+
**Diagram settings:**
58+
- `width` (length): Width of the diagram (default: 5)
59+
- `height` (length): Height of the diagram (default: 5)
60+
- `name` (string): Atom name to display (default: none)
61+
- `exclude-energy` (boolean): Hide energy values (default: false)
62+
63+
**Orbital levels** (positional arguments, each as a dictionary):
64+
- `energy` (number): Energy value of the orbital
65+
- `electrons` (number): Number of electrons (default: 0)
66+
- `degeneracy` (number): Degeneracy of the orbital (default: 1)
67+
- `caption` (string): Label for the orbital (default: none)
68+
- `up` (number): Number of spin-up electrons (optional; if not specified, electrons alternate between up and down spins)
69+
70+
---
71+
72+
### Molecular Orbital Diagrams (MO)
73+
74+
Visualize molecular orbital formation from atomic orbitals with orbital mixing.
75+
76+
#### Basic Syntax
77+
78+
```typst
79+
#mo(
80+
width: 15,
81+
height: 10,
82+
names: ("O", $"O"_2$ , "O"),
83+
exclude-energy: false,
84+
atom1: (
85+
(energy: -14, electrons: 2, label: 1, caption: "2s"),
86+
(energy: -5, electrons: 4, degeneracy: 3, up: 3, label: 2, caption: "2p"),
87+
),
88+
molecule: (
89+
(energy: -16, electrons: 2, label: 3, caption: [$1sigma$]),
90+
(energy: -12, electrons: 2, label: 4, caption: [$1sigma^*$]),
91+
(energy: -8, electrons: 2, label: 5, caption: [$2sigma$]),
92+
(energy: -6, electrons: 4, degeneracy: 2, label: 7, caption: [$pi$]),
93+
(energy: -4, electrons: 2, degeneracy: 2, up: 2, label: 8, caption: [$pi^*$]),
94+
(energy: -2, electrons: 0, label: 6, caption: [$2sigma^*$]),
95+
),
96+
atom2: (
97+
(energy: -14, electrons: 2, label: 9, caption: "2s"),
98+
(energy: -5, electrons: 4, degeneracy: 3, up: 3, label: 10, caption: "2p"),
99+
),
100+
(1, 3), (1, 4), (2, 5), (2, 7), (2, 8), (2, 6),
101+
(9, 3), (9, 4), (10, 5), (10, 7), (10, 8), (10, 6)
102+
)
103+
```
104+
105+
#### Parameters
106+
107+
**Diagram settings:**
108+
- `width` (length): Width of the diagram (default: 5)
109+
- `height` (length): Height of the diagram (default: 5)
110+
- `names` (array): Names for left atom, molecule, and right atom (default: ())
111+
- `exclude-energy` (boolean): Hide energy labels (default: false)
112+
113+
**Orbital data:**
114+
- `atom1` (array): Orbitals for left atom
115+
- `molecule` (array): Molecular orbitals
116+
- `atom2` (array): Orbitals for right atom
117+
118+
Each orbital is a dictionary with:
119+
- `energy` (number): Energy value
120+
- `electrons` (number): Number of electrons (default: 0)
121+
- `degeneracy` (number): Degeneracy (default: 1)
122+
- `caption` (string): Label (default: none)
123+
- `up` (number): Number of spin-up electrons (optional)
124+
- `label` (number): Unique identifier for connections
125+
126+
**Connections** (positional arguments):
127+
Tuples like `(1, 3)` connect orbitals with labels 1 and 3 using dashed lines.
128+
129+
**Important:** Each orbital array (`atom1`, `atom2`, `molecule`) must be an array, even for a single orbital. Don't forget the trailing comma: `((energy: -5, electrons: 1),)`
130+
131+
---
132+
133+
### Band Structure Diagrams
134+
135+
Plot energy diagram with minimal syntax—ideal-perfect for band structures, which have many orbitals
136+
137+
#### Basic Syntax
138+
139+
```typst
140+
#band(
141+
width: 5,
142+
height: 5,
143+
name: "Si",
144+
include-energy-labels: true,
145+
-5, -4, -3, 0, 1, 2
146+
)
147+
```
148+
149+
#### From CSV Data
150+
151+
```typst
152+
#let data = csv("test.csv")
153+
#let energies = data.map(row => float(row.at(0))).flatten()
154+
#band(
155+
include-energy-labels: false,
156+
..energies
157+
)
158+
```
159+
160+
#### Parameters
161+
162+
- `width` (length): Width of the diagram (default: 5)
163+
- `height` (length): Height of the diagram (default: 5)
164+
- `name` (string): Substance name to display (default: none)
165+
- `include-energy-labels` (boolean): Show energy values (default: false)
166+
- Positional arguments: Energy level values
167+
168+
## Examples
169+
170+
### Atomic Orbital Diagram
171+
172+
![Atomic Orbital](img/atomic_orbital.png)
173+
174+
### Molecular Orbital Diagram
175+
176+
![Molecular Orbital](img/molecular_orbital.png)
177+
178+
### Band Structure Diagram
179+
180+
![Band Structure](img/band.png)
181+
182+
**See [demo.typ](demo/demo.typ) for complete working examples!**
183+
184+
## Dependencies
185+
186+
- **[CeTZ](https://github.com/cetz-package/cetz)** v0.4.2 - Drawing library (LGPL-3.0)
187+
188+
## License
189+
190+
This project is licensed under the **GNU General Public License v3.0**. See [LICENSE](LICENSE) for details.
191+
192+
## Contributing
193+
194+
Contributions are welcome! Feel free to open issues or submit pull requests.
161 KB
Binary file not shown.

0 commit comments

Comments
 (0)