https://github.com/jamespfennell/new-typesetting-system Skip to content Navigation Menu Toggle navigation Sign in * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + GitHub Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Enterprise + Enterprise platform AI-powered developer platform Available add-ons + Advanced Security Enterprise-grade security features + GitHub Copilot Enterprise-grade AI features + Premium Support Enterprise-grade 24/7 support * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} jamespfennell / new-typesetting-system Public * Notifications You must be signed in to change notification settings * Fork 3 * Star 11 * GitHub copy of the NTS/TeX source code from 2001 License View license 11 stars 3 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings * Code * Issues 0 * Pull requests 0 * Actions * Projects 0 * Security * Insights Additional navigation options * Code * Issues * Pull requests * Actions * Projects * Security * Insights jamespfennell/new-typesetting-system This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main BranchesTags Go to file Code Folders and files Name Name Last commit message Last commit date Latest commit History 12 Commits doc doc scripts scripts src src .gitignore .gitignore CHANGELOG.md CHANGELOG.md LICENSE LICENSE README.md README.md View all files Repository files navigation * README * License New Typesetting System (TeX) This is GitHub copy of the source code of the New Typesetting System, which is a Java reimplementation of Donald Knuth's original version of TeX. This code was completed in 2001 and actually works! However, for various reasons it was decided not to continue the project (i.e., support more modern flavors of TeX), and there has been no further development on this code since. This copy exists to: 1. Have a nice way to browse the source code of NTS, especially for those who are thinking of developing new implementations of TeX. 2. Ensure that the code can still be compiled in modern versions of Java so this artifact lives on. Compiling and running NTS The code was written for Java 2 (aka 1.2) originally. It has been successfully compiled with Java 16, and so should theoretically work for all intermediate versions too. Compile: From the repo root, javac -classpath src -d build src/Nts.java jar --create --file nts.jar --main-class=Nts -C build Nts.class build/nts The compiled artifact is nts.jar. Run: Invoke java -jar nts.jar . Note that NTS only provides the core TeX execution engine and needs to be combined with some kind of "TeX format" to product anything meaningful. A good place to start is Knuth's own plain TeX format; compiling plain.tex from that page yields an actual document! Installing Java * MacOS: Install OpenJDK using brew (brew install java) and then perform the sym-linking command as described in brew info java. Running the tests Running the tests is really easy. Because there are no tests, to run the tests you just do nothing. License and changelog NTS has a custom open source license with extremely strange clauses around modification. Presumably it was inspired by Donald Knuth's own original "license" for TeX. The code as hosted here has small modifications versus the original that are fully detailed in the changelog. Specifically, * The internal layout of the repository has been changed. * Some warnings issued by recent Java compilers have been resolved by tweaks to the Java code. * The code was formatted using the Google Java formatter. About GitHub copy of the NTS/TeX source code from 2001 Topics tex Resources Readme License View license Activity Stars 11 stars Watchers 3 watching Forks 3 forks Report repository Releases No releases published Packages 0 No packages published Languages * Java 99.3% * Other 0.7% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.