# IMPE LaTeX System

[English](README.md)

IMPE 是一套模組化 XeLaTeX 框架，提供可重用的版面、字體路由、多語排版與選用
文件功能。

目前版本：`v1.0.1`（2026-09-29）。版本記錄見
[CHANGELOG-zh.md](CHANGELOG-zh.md)。

## 快速開始

若 wrapper class 的預設值符合文件需求，可直接使用：

```tex
\documentclass{impeart_zh}

\title{範例文件}
\author{作者}

\UseTemplateSet{
  fonts = {libertinus},
  features = {math,hyperlinks,headers}
}

\begin{document}
\maketitle
\section{導論}
Hello, IMPE.
\end{document}
```

標準入口是 `impe.sty`、`impeart`、`impeart_zh`、`impebook`、
`impebook_zh`、`impereport`、`impereport_zh`、`impebeamer` 與
`impebeamer_zh`。舊的 `next*` 名稱只作為既有文件的相容 wrapper，且只收錄於
full 與 core release。

## 支援矩陣

| 項目 | 支援狀態 |
| --- | --- |
| 主要文件引擎 | XeLaTeX |
| XeLaTeX | 受支援；手冊、showcase 與一般回歸測試皆使用此引擎 |
| LuaLaTeX | 不屬於受支援或受測的一般文件路線；只有明確設定的 backend hook 可能使用 |
| Unicode-range 全域路由 | 僅支援 XeLaTeX |
| 特殊／externalized backend | 從 `PATH` 解析明確指定的引擎；需要 shell escape；helper 回歸使用 XeLaTeX |
| TeX Live | 已測試 2026 |
| Windows | 經 CI 測試 |
| Linux | 經 CI 測試 |
| macOS | best effort；目前未經 CI 測試 |

[API 與相容性政策](docs/STABILITY-zh.md)定義 1.x 的公開契約；
[擴充指南](docs/EXTENDING-zh.md)說明新增字體、文字、版面與功能時應採用的
catalog-first 原則。

## 安裝

使用 GitHub 的 full 或 core release 時，解壓後執行：

```bat
install.bat
```

安裝器會寫入使用者 TEXMF 樹的 `tex/latex/impe/`。full 封裝包含允許再分發的
本地字體；core 封裝只含執行環境。若要使用其他字體庫，請設定
`impe.local.tex` 或 `\SetCatalogFontRoot{...}`。

checkout 內的文件可直接載入 `package/impe-system.tex`：

```tex
\usepackage{import}
\subimport{../../package/}{impe-system.tex}
\UseTemplateSet{...}
```

## 字體資源

CTAN 發佈不包含選用的本機字體庫。部分多語手冊與 showcase 原始碼若要完整重現，
可能需要本機設定字體；發佈內已附預先建置的文件 PDF。`font_licenses/` 下的第三方
記錄屬於原始碼倉庫及適用時的 full release，不屬於 CTAN archive；CTAN 不含字體
二進位檔，也不含該授權目錄。

## 文件

- [英文手冊](manual/en/impe-manual-en.pdf)——技術參考版
- [繁體中文手冊](manual/zh-tw/impe-manual-zh-tw.pdf)
- [德文手冊](manual/de/impe-manual-de.pdf)
- [標準展示 PDF](manual/showcase/impe-showcase.pdf) 與
  [原始碼](manual/showcase/impe-showcase.tex)
- [系統](docs/SYSTEM-zh.md)、[字體](docs/FONTS-zh.md)、
  [版面](docs/LAYOUTS-zh.md)與[功能](docs/FEATURES-zh.md)參考文件
- [API 穩定性](docs/STABILITY-zh.md)與[擴充指南](docs/EXTENDING-zh.md)

建置全部手冊：

```powershell
scripts\build_manual.ps1
```

可用 `-Language en`、`-Language de` 或 `-Language zh-tw` 只建置一種語言。
`manual/en/` 與 `manual/zh-tw/` 中的 `.latexmkrc` 可供 XeLaTeX 直接建置。

## 倉庫結構

```text
package/          公開 package 與 class 入口
core/             穩定子系統邏輯
catalog/          公開字體、版面與功能註冊
modules/          具體版面、字體與功能模組
assets/           本地執行資源；字體二進位檔不由 Git 追蹤
manual/           手冊原始碼、受追蹤 PDF 與 showcase
docs/             子系統參考文件
scripts/          建置與安裝工具
tests/            回歸測試
```

## 發佈封裝

`scripts\build_release.bat` 會生成：

- `IMPE-LaTeX-System-vX.Y.Z-full.zip`：執行環境、相容 wrapper 與允許收錄的
  本地字體庫
- `IMPE-LaTeX-System-vX.Y.Z-core.zip`：執行環境與相容 wrapper，不含字體
- `impe-framework.zip`：CTAN 發佈；只有一個 `impe-framework/` 根目錄，包含
  標準 `impe*` 入口、手冊及 showcase 原始碼/PDF，不含 `next*` 入口與字體
  二進位檔

獨立發佈的手冊與 showcase PDF 繼續使用 `impe-` 專案前綴。CTAN id
`impe-framework` 不會改變專案名稱、package 名稱、class 名稱或 TEXMF namespace。

## 開發與測試

使用本地字體設定執行回歸測試：

```powershell
tests\run_regressions.ps1
```

使用 CI 可用的公開字體 fixture：

```powershell
tests\run_regressions.ps1 -PublicFonts
```

測試涵蓋標準與相容入口、字體路由、手冊建置、可重現 CTAN 封裝、archive
內容與安裝遷移。倉庫不追蹤 `assets/fonts/`；分發政策見
[assets/README-zh.md](assets/README-zh.md)。

## 維護者

Sikai Yang。公開聯絡與支援請使用
[GitHub Issues](https://github.com/KelvinYangBK67/IMPE-LaTeX-System/issues)。

## 授權

MIT License。詳見 [LICENSE](LICENSE)。
