{"_id":"@achieveai/mathjax-converter-server","_rev":"3-08bd80dc235e86f274524fcca1722ea2","name":"@achieveai/mathjax-converter-server","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@achieveai/mathjax-converter-server","version":"1.0.0","keywords":["latex","mathml","katex","mathjax","math","converter","server","svg","html","math-rendering","latex-to-mathml","mathml-to-svg","api-server"],"author":{"url":"https://achieve.ai","name":"AchieveAI","email":"support@achieveai.com"},"license":"MIT","_id":"@achieveai/mathjax-converter-server@1.0.0","maintainers":[{"name":"g_mcqdb","email":"gautam@mcqdb.com"}],"contributors":[{"name":"Mohammed"}],"homepage":"https://achieve.ai","bin":{"mathjax-converter-server":"server.js"},"dist":{"shasum":"d130896e0864c37e8eec2cd6eb4af3f675135d84","tarball":"https://registry.npmjs.org/@achieveai/mathjax-converter-server/-/mathjax-converter-server-1.0.0.tgz","fileCount":7,"integrity":"sha512-baUKfc8wRD5iv42mayo3R5BdyDt3aEiI7m2C4j9+NnlTA0nGW26J0Mt0FBx8Tm1oo0u0h6cGJCypMHyQoFOdKw==","signatures":[{"sig":"MEUCIQCZaqOR3y+X4TxNd04A1QqPQi9ftn/MVusDXu46Q18h7QIgRUN98vjZxfAQnYLHks6EMvAm0B9FCzie9YyNKWBv4CA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25450},"main":"server.js","engines":{"node":">=10.0.0"},"gitHead":"e0b60168497d3a5b962b49c832cd84dc8080a87c","scripts":{"dev":"node server.js","test":"echo \"Error: no test specified\" && exit 1","build":"gulp","start":"node server.js"},"_npmUser":{"name":"g_mcqdb","email":"gautam@mcqdb.com"},"_npmVersion":"11.5.0","description":"A Node.js server for converting mathematical notation between LaTeX, MathML, HTML, and SVG formats using KaTeX and MathJax renderers.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"katex":"^0.16.22","mathjax-node":"^2.1.1","html-entities":"^2.6.0"},"_hasShrinkwrap":false,"devDependencies":{"gulp":"^5.0.1","gulp-zip":"^6.1.0","minimist":"^1.2.7"},"_npmOperationalInternal":{"tmp":"tmp/mathjax-converter-server_1.0.0_1755663965039_0.21203431299471265","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@achieveai/mathjax-converter-server","version":"1.0.1","keywords":["latex","mathml","katex","mathjax","math","converter","server","svg","html","math-rendering","latex-to-mathml","mathml-to-svg","api-server"],"author":{"url":"https://achieve.ai","name":"AchieveAI","email":"support@achieveai.com"},"license":"MIT","_id":"@achieveai/mathjax-converter-server@1.0.1","maintainers":[{"name":"g_mcqdb","email":"gautam@mcqdb.com"}],"contributors":[{"name":"Mohammed"}],"homepage":"https://achieve.ai","bin":{"mathjax-converter-server":"server.js"},"dist":{"shasum":"d67da7b183c3f0ac61b01b0e3f8bbc67125907c4","tarball":"https://registry.npmjs.org/@achieveai/mathjax-converter-server/-/mathjax-converter-server-1.0.1.tgz","fileCount":7,"integrity":"sha512-LAlQWVcRlpW9GjV74KPd7D4dDPVp6UYVsOdwY76xaR7x8HP8zxMOn6nXtxUmc4Yo/zS2HiBEJ/KBJW14BkfzTw==","signatures":[{"sig":"MEUCIGkuqnGXjFG+CUYWnPNiA6nff+Q7h0nxanR0YtH6ojrCAiEA3QkuvCpwQ7uIrRPmiKgM2GisKeve+jwW4gNa68A3MpU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25388},"main":"server.js","engines":{"node":">=10.0.0"},"gitHead":"e0b60168497d3a5b962b49c832cd84dc8080a87c","scripts":{"dev":"node server.js","test":"echo \"Error: no test specified\" && exit 1","build":"gulp","start":"node server.js"},"_npmUser":{"name":"g_mcqdb","email":"gautam@mcqdb.com"},"_npmVersion":"11.5.0","description":"A Node.js server for converting mathematical notation between LaTeX, MathML, HTML, and SVG formats using KaTeX and MathJax renderers.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"katex":"^0.16.22","mathjax-node":"^2.1.1","html-entities":"^2.6.0"},"_hasShrinkwrap":false,"devDependencies":{"gulp":"^5.0.1","gulp-zip":"^6.1.0","minimist":"^1.2.7"},"_npmOperationalInternal":{"tmp":"tmp/mathjax-converter-server_1.0.1_1755664444458_0.8877390667232297","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@achieveai/mathjax-converter-server","version":"1.0.2","description":"A Node.js server for converting mathematical notation between LaTeX, MathML, HTML, and SVG formats using KaTeX and MathJax renderers.","main":"server.js","bin":{"mathjax-converter-server":"server.js"},"scripts":{"start":"node server.js","dev":"node server.js","build":"gulp","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["latex","mathml","katex","mathjax","math","converter","server","svg","html","math-rendering","latex-to-mathml","mathml-to-svg","api-server"],"engines":{"node":">=10.0.0"},"homepage":"https://achieve.ai","author":{"name":"AchieveAI","email":"support@achieveai.com","url":"https://achieve.ai"},"contributors":[{"name":"Mohammed"}],"license":"MIT","dependencies":{"html-entities":"^2.6.0","katex":"^0.16.22","mathjax-node":"^2.1.1"},"devDependencies":{"gulp":"^5.0.1","gulp-zip":"^6.1.0","minimist":"^1.2.7"},"_id":"@achieveai/mathjax-converter-server@1.0.2","gitHead":"e0b60168497d3a5b962b49c832cd84dc8080a87c","_nodeVersion":"22.17.1","_npmVersion":"11.5.0","dist":{"integrity":"sha512-RgkjHoONNfbSZJJqThNnj/Wr9bnFDL0ORBqmgvCVbpi9kfYEId08WHIEIYrvJgNm7yDVqOdvwg6Xc0bIS21W7A==","shasum":"436f2194e8111ea8e97225d50d0b430d7110b3bb","tarball":"https://registry.npmjs.org/@achieveai/mathjax-converter-server/-/mathjax-converter-server-1.0.2.tgz","fileCount":7,"unpackedSize":25411,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCxXsDqxnJ5051hgO9BCV2yKeAH/Vnyq5huOItUDe08kQIhAMTLBcJwEqZGjsAn6ZEGKlxXk3l0FLfrIBscpWfXvNdv"}]},"_npmUser":{"name":"g_mcqdb","email":"gautam@mcqdb.com"},"directories":{},"maintainers":[{"name":"g_mcqdb","email":"gautam@mcqdb.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mathjax-converter-server_1.0.2_1755664538948_0.11703776286707224"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-20T04:26:04.917Z","modified":"2025-08-20T04:35:39.407Z","1.0.0":"2025-08-20T04:26:05.219Z","1.0.1":"2025-08-20T04:34:04.701Z","1.0.2":"2025-08-20T04:35:39.165Z"},"author":{"name":"AchieveAI","email":"support@achieveai.com","url":"https://achieve.ai"},"license":"MIT","homepage":"https://achieve.ai","keywords":["latex","mathml","katex","mathjax","math","converter","server","svg","html","math-rendering","latex-to-mathml","mathml-to-svg","api-server"],"description":"A Node.js server for converting mathematical notation between LaTeX, MathML, HTML, and SVG formats using KaTeX and MathJax renderers.","contributors":[{"name":"Mohammed"}],"maintainers":[{"name":"g_mcqdb","email":"gautam@mcqdb.com"}],"readme":"# @achieveai/mathjax-converter-server\r\n\r\nA Node.js server that provides comprehensive mathematical notation conversion between LaTeX, MathML, HTML, and SVG formats using both KaTeX and MathJax renderers.\r\n\r\n## Features\r\n\r\n- **Multiple Conversion Paths:**\r\n  - LaTeX → MathML, HTML, SVG\r\n  - MathML → LaTeX*, HTML, SVG\r\n  \r\n- **Dual Renderer Support:**\r\n  - **KaTeX**: Fast rendering, supports LaTeX → MathML/HTML\r\n  - **MathJax**: Full-featured, supports all conversions including SVG\r\n\r\n- **Flexible API**: Modern API with backward compatibility\r\n- **HTML Entity Decoding**: Automatic handling of HTML entities in input\r\n- **Error Handling**: Comprehensive error reporting\r\n- **Interactive Documentation**: Built-in API documentation at root endpoint\r\n\r\n*Note: MathML to LaTeX conversion is not yet fully implemented and requires additional libraries.\r\n\r\n## Installation\r\n\r\n### Local Installation\r\n```bash\r\nnpm install\r\n```\r\n\r\n### Global Installation\r\n```bash\r\nnpm install -g @achieveai/mathjax-converter-server\r\n```\r\n\r\n## Usage\r\n\r\n### Starting the Server\r\n\r\n#### Local Installation\r\n```bash\r\nnpm start\r\n# or\r\nnpm run dev\r\n# or\r\nnode server.js\r\n```\r\n\r\n#### Global Installation\r\n```bash\r\nmathjaxconverter\r\n```\r\n\r\n#### Configuration via Environment Variables\r\n\r\nThe server can be configured using environment variables:\r\n\r\n- **PORT** or **MATHJAX_PORT**: Server port (default: 1337)\r\n- **HOST** or **MATHJAX_HOST**: Server host address (default: 0.0.0.0)\r\n\r\n```bash\r\n# Custom port\r\nPORT=3000 npm start\r\n\r\n# Custom host and port\r\nHOST=127.0.0.1 PORT=3000 npm start\r\n\r\n# Using MATHJAX-specific variables\r\nMATHJAX_HOST=localhost MATHJAX_PORT=8080 node server.js\r\n\r\n# Listen on all interfaces\r\nHOST=0.0.0.0 PORT=3000 npm start\r\n```\r\n\r\nThe server runs on `http://0.0.0.0:1337` by default (accessible as `http://localhost:1337`).\r\n\r\n## API Reference\r\n\r\n### POST /\r\n\r\nConvert mathematical notation between different formats.\r\n\r\n#### Request Body\r\n\r\n```json\r\n{\r\n  \"from\": \"latex\",          // Input format: \"latex\" or \"mathml\"\r\n  \"to\": \"mathml\",          // Output format: \"mathml\", \"html\", or \"svg\"\r\n  \"input\": \"x^2 + y^2\",    // Input content (or use \"latex\"/\"mathml\" field)\r\n  \"renderer\": \"katex\",     // Optional: \"katex\" or \"mathjax\" (default: katex)\r\n  \"displayMode\": false,    // Optional: Display mode (default: false)\r\n  \"width\": 100            // Optional: Width for rendering (MathJax only)\r\n}\r\n```\r\n\r\n#### Response\r\n\r\n**Success:**\r\n```json\r\n{\r\n  \"errs\": null,\r\n  \"res\": {\r\n    \"mathml\": \"<math>...</math>\"\r\n  }\r\n}\r\n```\r\n\r\n**Error:**\r\n```json\r\n{\r\n  \"errs\": \"Error message\",\r\n  \"res\": null\r\n}\r\n```\r\n\r\n### Example Requests\r\n\r\n#### LaTeX to MathML (KaTeX)\r\n```json\r\n{\r\n  \"from\": \"latex\",\r\n  \"to\": \"mathml\",\r\n  \"latex\": \"\\\\frac{a}{b}\",\r\n  \"renderer\": \"katex\"\r\n}\r\n```\r\n\r\n#### LaTeX to SVG (MathJax)\r\n```json\r\n{\r\n  \"from\": \"latex\",\r\n  \"to\": \"svg\",\r\n  \"latex\": \"\\\\int_0^1 x^2 dx\",\r\n  \"renderer\": \"mathjax\"\r\n}\r\n```\r\n\r\n#### LaTeX to HTML (KaTeX)\r\n```json\r\n{\r\n  \"from\": \"latex\",\r\n  \"to\": \"html\",\r\n  \"latex\": \"e^{i\\\\pi} + 1 = 0\",\r\n  \"renderer\": \"katex\",\r\n  \"displayMode\": true\r\n}\r\n```\r\n\r\n#### MathML to HTML (MathJax)\r\n```json\r\n{\r\n  \"from\": \"mathml\",\r\n  \"to\": \"html\",\r\n  \"mathml\": \"<math><mi>x</mi><mo>+</mo><mi>y</mi></math>\",\r\n  \"renderer\": \"mathjax\"\r\n}\r\n```\r\n\r\n#### MathML to SVG (MathJax)\r\n```json\r\n{\r\n  \"from\": \"mathml\",\r\n  \"to\": \"svg\",\r\n  \"mathml\": \"<math><msqrt><mi>x</mi></msqrt></math>\",\r\n  \"renderer\": \"mathjax\",\r\n  \"width\": 150\r\n}\r\n```\r\n\r\n### Legacy API Support\r\n\r\nThe server maintains backward compatibility with the original API format:\r\n\r\n#### Legacy LaTeX Request\r\n```json\r\n{\r\n  \"latex\": \"x^2\",\r\n  \"displayMode\": false\r\n}\r\n```\r\n\r\n#### Legacy MathML Request\r\n```json\r\n{\r\n  \"mathMl\": \"<math><mi>x</mi></math>\",\r\n  \"svg\": true\r\n}\r\n```\r\n\r\n## Conversion Matrix\r\n\r\n| From \\ To | LaTeX | MathML | HTML | SVG |\r\n|-----------|-------|--------|------|-----|\r\n| **LaTeX** | - | ✅ KaTeX/MathJax | ✅ KaTeX/MathJax | ✅ MathJax |\r\n| **MathML** | ⚠️ Limited | - | ✅ MathJax | ✅ MathJax |\r\n\r\nLegend:\r\n- ✅ Fully supported\r\n- ⚠️ Limited support (requires additional implementation)\r\n- KaTeX/MathJax: Available in both renderers\r\n- MathJax: Only available in MathJax renderer\r\n\r\n## Renderer Comparison\r\n\r\n### KaTeX\r\n- **Pros:**\r\n  - Very fast rendering\r\n  - Smaller output size\r\n  - Good for web applications\r\n- **Cons:**\r\n  - Limited to LaTeX input\r\n  - No SVG output support\r\n  - Smaller set of supported LaTeX commands\r\n\r\n### MathJax\r\n- **Pros:**\r\n  - Comprehensive LaTeX support\r\n  - Supports both LaTeX and MathML input\r\n  - Can output to SVG, HTML, and MathML\r\n  - More extensive macro support\r\n- **Cons:**\r\n  - Slower rendering compared to KaTeX\r\n  - Larger output size\r\n\r\n## Development\r\n\r\n### Project Structure\r\n```\r\nMathJaxConverter/\r\n├── server.js           # Main server with routing logic\r\n├── Katex_Server.js     # KaTeX renderer module\r\n├── MathJax_Server.js   # MathJax renderer module\r\n├── package.json        # Dependencies and scripts\r\n├── gulpfile.js        # Build configuration\r\n└── README.md          # This file\r\n```\r\n\r\n### Build Package\r\n```bash\r\nnpm run build\r\n```\r\n\r\n### Testing\r\n\r\nYou can test the API using curl:\r\n\r\n```bash\r\n# LaTeX to MathML using KaTeX\r\ncurl -X POST http://localhost:1337 \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"from\":\"latex\",\"to\":\"mathml\",\"latex\":\"x^2\",\"renderer\":\"katex\"}'\r\n\r\n# LaTeX to SVG using MathJax\r\ncurl -X POST http://localhost:1337 \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"from\":\"latex\",\"to\":\"svg\",\"latex\":\"\\\\sum_{i=1}^n i\",\"renderer\":\"mathjax\"}'\r\n```\r\n\r\n## Dependencies\r\n\r\n- **katex**: Fast math rendering library\r\n- **mathjax-node**: Server-side MathJax for comprehensive math rendering\r\n- **html-entities**: HTML entity encoding/decoding\r\n- **gulp**: Build automation (dev dependency)\r\n\r\n## License\r\n\r\nMIT\r\n\r\n## Author\r\n\r\n[AchieveAI](https://achieve.ai)\r\n\r\n## Contributors\r\n\r\n- Mohammed\r\n\r\n## Support\r\n\r\nFor support, email support@achieveai.com or visit [https://achieve.ai](https://achieve.ai)","readmeFilename":"README.md"}