{"adoption": {"forks": 126, "observed_at": "2026-08-28T04:03:23.330565+00:00", "stars": 1052}, "canonical_url": "https://ross.abutalabs.com/products/ctex-kit", "card": {"archived": false, "artifact_type": "library", "description": "Chinese typesetting infrastructure for LaTeX — ctex, xeCJK, and satellite packages (XeLaTeX / LuaLaTeX / pdfLaTeX / upLaTeX)", "domain": ["documentation", "text-editors", "developer-tools"], "enriched": true, "function": ["templating", "internationalization", "documentation", "developer-tools"], "health_score": 99, "homepage": "https://ctan.org/pkg/ctex", "language": "TeX", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["CTeX-org/ctex-kit"], "name": "CTeX-org/ctex-kit", "platform": ["windows", "cross-platform", "cli"], "pushed_at": "2026-08-22T13:40:03+00:00", "repo": "CTeX-org/ctex-kit", "stars": 1052, "tags": ["latex", "chinese-typesetting", "cjk", "xelatex", "lualatex", "tex", "punctuation-kerning", "pinyin", "font-configuration", "localization", "linux", "macos"], "topics": ["latex", "ctex", "chinese", "cjk", "expl3", "l3build", "lualatex", "tex", "typesetting", "xecjk", "xelatex"], "urls": [], "use_cases": ["typeset a Chinese document in LaTeX", "add pinyin annotations above Chinese characters", "format numbers and dates in Chinese style", "compress CJK punctuation spacing in LaTeX", "mix Chinese and Western text with proper spacing and line spacing", "use Chinese fonts with XeLaTeX or LuaLaTeX", "write a Chinese thesis or book with ctexart/ctexbook classes"], "what_it_is": "CTeX-kit is a collection of LaTeX packages, scripts, and resources providing Chinese typesetting infrastructure, including the core ctex document classes and xeCJK font management package. It supports multiple TeX engines (XeLaTeX, LuaLaTeX, pdfLaTeX, upLaTeX) with unified Chinese font configuration, punctuation kerning, and Chinese-style formatting.", "when_to_avoid": ["you are not typesetting CJK content", "you use a word processor or non-TeX typesetting workflow", "you need a different CJK language's typographic conventions (e.g., Japanese vertical typesetting)"], "when_to_choose": ["you need reliable, actively maintained Chinese typesetting in LaTeX across multiple TeX engines", "you want Chinese-style section headings, fonts, and punctuation handled automatically", "you need satellite features like pinyin annotation or Chinese numerals"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ctex-kit", "repo": "CTeX-org/ctex-kit", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.330565+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:59:40.425870+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ffea0fe235f88a5699965075899c3acdf2c59e60868a170b1d5b316cc8d4f00", "fetched_at": "2026-08-28T04:03:23.330565+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CTeX-org/ctex-kit"}, {"content_hash": "9d3f65cad09860f2885dd8fd412dc6fee8b18e2fd6763fef15dc959f3e78a9a1", "fetched_at": "2026-08-29T13:00:56.303928+00:00", "kind": "homepage", "missing": false, "url": "https://ctan.org/pkg/ctex"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.330565+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:59:40.425870+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ffea0fe235f88a5699965075899c3acdf2c59e60868a170b1d5b316cc8d4f00", "fetched_at": "2026-08-28T04:03:23.330565+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CTeX-org/ctex-kit"}, {"content_hash": "9d3f65cad09860f2885dd8fd412dc6fee8b18e2fd6763fef15dc959f3e78a9a1", "fetched_at": "2026-08-29T13:00:56.303928+00:00", "kind": "homepage", "missing": false, "url": "https://ctan.org/pkg/ctex"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:59:40.425870+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ffea0fe235f88a5699965075899c3acdf2c59e60868a170b1d5b316cc8d4f00", "fetched_at": "2026-08-28T04:03:23.330565+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CTeX-org/ctex-kit"}, {"content_hash": "9d3f65cad09860f2885dd8fd412dc6fee8b18e2fd6763fef15dc959f3e78a9a1", "fetched_at": "2026-08-29T13:00:56.303928+00:00", "kind": "homepage", "missing": false, "url": "https://ctan.org/pkg/ctex"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.330565+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.330565+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.330565+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:59:40.425870+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ffea0fe235f88a5699965075899c3acdf2c59e60868a170b1d5b316cc8d4f00", "fetched_at": "2026-08-28T04:03:23.330565+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CTeX-org/ctex-kit"}, {"content_hash": "9d3f65cad09860f2885dd8fd412dc6fee8b18e2fd6763fef15dc959f3e78a9a1", "fetched_at": "2026-08-29T13:00:56.303928+00:00", "kind": "homepage", "missing": false, "url": "https://ctan.org/pkg/ctex"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.330565+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.330565+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:59:40.425870+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ffea0fe235f88a5699965075899c3acdf2c59e60868a170b1d5b316cc8d4f00", "fetched_at": "2026-08-28T04:03:23.330565+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CTeX-org/ctex-kit"}, {"content_hash": "9d3f65cad09860f2885dd8fd412dc6fee8b18e2fd6763fef15dc959f3e78a9a1", "fetched_at": "2026-08-29T13:00:56.303928+00:00", "kind": "homepage", "missing": false, "url": "https://ctan.org/pkg/ctex"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.330565+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.330565+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.330565+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:59:40.425870+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ffea0fe235f88a5699965075899c3acdf2c59e60868a170b1d5b316cc8d4f00", "fetched_at": "2026-08-28T04:03:23.330565+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CTeX-org/ctex-kit"}, {"content_hash": "9d3f65cad09860f2885dd8fd412dc6fee8b18e2fd6763fef15dc959f3e78a9a1", "fetched_at": "2026-08-29T13:00:56.303928+00:00", "kind": "homepage", "missing": false, "url": "https://ctan.org/pkg/ctex"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.330565+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:23.330565+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:59:40.425870+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ffea0fe235f88a5699965075899c3acdf2c59e60868a170b1d5b316cc8d4f00", "fetched_at": "2026-08-28T04:03:23.330565+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CTeX-org/ctex-kit"}, {"content_hash": "9d3f65cad09860f2885dd8fd412dc6fee8b18e2fd6763fef15dc959f3e78a9a1", "fetched_at": "2026-08-29T13:00:56.303928+00:00", "kind": "homepage", "missing": false, "url": "https://ctan.org/pkg/ctex"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:59:40.425870+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ffea0fe235f88a5699965075899c3acdf2c59e60868a170b1d5b316cc8d4f00", "fetched_at": "2026-08-28T04:03:23.330565+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CTeX-org/ctex-kit"}, {"content_hash": "9d3f65cad09860f2885dd8fd412dc6fee8b18e2fd6763fef15dc959f3e78a9a1", "fetched_at": "2026-08-29T13:00:56.303928+00:00", "kind": "homepage", "missing": false, "url": "https://ctan.org/pkg/ctex"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:59:40.425870+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ffea0fe235f88a5699965075899c3acdf2c59e60868a170b1d5b316cc8d4f00", "fetched_at": "2026-08-28T04:03:23.330565+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CTeX-org/ctex-kit"}, {"content_hash": "9d3f65cad09860f2885dd8fd412dc6fee8b18e2fd6763fef15dc959f3e78a9a1", "fetched_at": "2026-08-29T13:00:56.303928+00:00", "kind": "homepage", "missing": false, "url": "https://ctan.org/pkg/ctex"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:59:40.425870+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ffea0fe235f88a5699965075899c3acdf2c59e60868a170b1d5b316cc8d4f00", "fetched_at": "2026-08-28T04:03:23.330565+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CTeX-org/ctex-kit"}, {"content_hash": "9d3f65cad09860f2885dd8fd412dc6fee8b18e2fd6763fef15dc959f3e78a9a1", "fetched_at": "2026-08-29T13:00:56.303928+00:00", "kind": "homepage", "missing": false, "url": "https://ctan.org/pkg/ctex"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 99}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4189, "days_push": 11, "days_rel": 11, "gap_med": 3.0, "n_releases_24m": 15}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}