{"id":20466019,"url":"https://github.com/withprecedent/cento","last_synced_at":"2026-06-04T12:31:09.132Z","repository":{"id":232319153,"uuid":"784034194","full_name":"WithPrecedent/cento","owner":"WithPrecedent","description":"Combines markdown files into publications and related materials","archived":false,"fork":false,"pushed_at":"2024-11-13T23:03:05.000Z","size":1336,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-16T01:16:48.581Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WithPrecedent.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-09T03:51:46.000Z","updated_at":"2024-11-13T23:02:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"744afa16-baa5-4e4b-b236-b64f09895e1c","html_url":"https://github.com/WithPrecedent/cento","commit_stats":null,"previous_names":["withprecedent/cento"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WithPrecedent%2Fcento","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WithPrecedent%2Fcento/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WithPrecedent%2Fcento/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WithPrecedent%2Fcento/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WithPrecedent","download_url":"https://codeload.github.com/WithPrecedent/cento/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242025886,"owners_count":20059811,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T13:21:07.111Z","updated_at":"2026-06-04T12:31:09.118Z","avatar_url":"https://github.com/WithPrecedent.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cento\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/WithPrecedent/cento/blob/main/docs/images/logo.jfif?raw=true\" alt=\"logo\" style=\"width:200px;\"/\u003e\n\u003c/p\u003e\n\n| | |\n| --- | --- |\n| Version | [![PyPI Latest Release](https://img.shields.io/pypi/v/cento.svg?style=for-the-badge\u0026color=steelblue\u0026label=PyPI\u0026logo=PyPI\u0026logoColor=yellow)](https://pypi.org/project/cento/) [![GitHub Latest Release](https://img.shields.io/github/v/tag/WithPrecedent/cento?style=for-the-badge\u0026color=navy\u0026label=GitHub\u0026logo=github)](https://github.com/WithPrecedent/cento/releases)\n| Status | [![Build Status](https://img.shields.io/github/actions/workflow/status/WithPrecedent/cento/ci.yml?branch=main\u0026style=for-the-badge\u0026color=cadetblue\u0026label=Tests\u0026logo=pytest)](https://github.com/WithPrecedent/cento/actions/workflows/ci.yml?query=branch%3Amain) [![Development Status](https://img.shields.io/badge/Development-Active-seagreen?style=for-the-badge\u0026logo=git)](https://www.repostatus.org/#active) [![Project Stability](https://img.shields.io/pypi/status/cento?style=for-the-badge\u0026logo=pypi\u0026label=Stability\u0026logoColor=yellow)](https://pypi.org/project/cento/)\n| Documentation | [![Hosted By](https://img.shields.io/badge/Hosted_by-Github_Pages-blue?style=for-the-badge\u0026color=navy\u0026logo=github)](https://WithPrecedent.github.io/cento)\n| Tools | [![Documentation](https://img.shields.io/badge/MkDocs-magenta?style=for-the-badge\u0026color=deepskyblue\u0026logo=markdown\u0026labelColor=gray)](https://squidfunk.github.io/mkdocs-material/) [![Linter](https://img.shields.io/endpoint?style=for-the-badge\u0026url=https://raw.githubusercontent.com/charliermarsh/Ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/Ruff) [![Dependency Manager](https://img.shields.io/badge/PDM-mediumpurple?style=for-the-badge\u0026logo=affinity\u0026labelColor=gray)](https://PDM.fming.dev) [![Pre-commit](https://img.shields.io/badge/pre--commit-darkolivegreen?style=for-the-badge\u0026logo=pre-commit\u0026logoColor=white\u0026labelColor=gray)](https://github.com/TezRomacH/python-package-template/blob/master/.pre-commit-config.yaml) [![CI](https://img.shields.io/badge/GitHub_Actions-navy?style=for-the-badge\u0026logo=githubactions\u0026labelColor=gray\u0026logoColor=white)](https://github.com/features/actions) [![Editor Settings](https://img.shields.io/badge/Editor_Config-paleturquoise?style=for-the-badge\u0026logo=editorconfig\u0026labelColor=gray)](https://editorconfig.org/) [![Repository Template](https://img.shields.io/badge/snickerdoodle-bisque?style=for-the-badge\u0026logo=cookiecutter\u0026labelColor=gray)](https://www.github.com/WithPrecedent/cento) [![Dependency Maintainer](https://img.shields.io/badge/dependabot-navy?style=for-the-badge\u0026logo=dependabot\u0026logoColor=white\u0026labelColor=gray)](https://github.com/dependabot)\n| Compatibility | [![Compatible Python Versions](https://img.shields.io/pypi/pyversions/cento?style=for-the-badge\u0026color=steelblue\u0026label=Python\u0026logo=python\u0026logoColor=yellow)](https://pypi.python.org/pypi/cento/) [![Linux](https://img.shields.io/badge/Linux-lightseagreen?style=for-the-badge\u0026logo=linux\u0026labelColor=gray\u0026logoColor=white)](https://www.linux.org/) [![MacOS](https://img.shields.io/badge/MacOS-snow?style=for-the-badge\u0026logo=apple\u0026labelColor=gray)](https://www.apple.com/macos/) [![Windows](https://img.shields.io/badge/windows-blue?style=for-the-badge\u0026logo=Windows\u0026labelColor=gray\u0026color=orangered)](https://www.microsoft.com/en-us/windows?r=1)\n| Stats | [![PyPI Download Rate (per month)](https://img.shields.io/pypi/dm/cento?style=for-the-badge\u0026color=steelblue\u0026label=Downloads%20💾\u0026logo=pypi\u0026logoColor=yellow)](https://pypi.org/project/cento) [![GitHub Stars](https://img.shields.io/github/stars/WithPrecedent/cento?style=for-the-badge\u0026color=navy\u0026label=Stars%20⭐\u0026logo=github)](https://github.com/WithPrecedent/cento/stargazers) [![GitHub Contributors](https://img.shields.io/github/contributors/WithPrecedent/cento?style=for-the-badge\u0026color=navy\u0026label=Contributors%20🙋\u0026logo=github)](https://github.com/WithPrecedent/cento/graphs/contributors) [![GitHub Issues](https://img.shields.io/github/issues/WithPrecedent/cento?style=for-the-badge\u0026color=navy\u0026label=Issues%20📘\u0026logo=github)](https://github.com/WithPrecedent/cento/graphs/contributors) [![GitHub Forks](https://img.shields.io/github/forks/WithPrecedent/cento?style=for-the-badge\u0026color=navy\u0026label=Forks%20🍴\u0026logo=github)](https://github.com/WithPrecedent/cento/forks)\n| | |\n\n-----\n\n## What is cento?\n\n*CENTO: \"A composition formed by joining scrapes from other authours.\"* - [Samuel\nJohnson's Dictionary of the English Language](https://johnsonsdictionaryonline.com/views/search.php?term=cento)\n\n## Why use cento?\n\n`cento` allows a user to create a text, accompanying slides, and notes from a\nsimple configuration file and markdown documents.\n\n## Getting started\n\n### Requirements\n\nTo use `cento`, you need:\n\n* A markdown editor (any text editor may suffice)\n* Python 3.10 or later\n\n### Installation\n\nTo install `cento`, use `pip`:\n\n```sh\npip install cento\n```\n\n### Usage\n\nFirst, you create a simple configuration file named \"project\" with a file\nextension matching one of the supported file configuration types. This should be\nstored in the same folder as your markdown files that will form the produced\ntexts. Metadata goes in the first section titled \"Project.\" The \"Outline\"\nsection contains the substructure of the intended documents (text, slides,\nand/or notes).\n\n```ini\n[Project]\nName: Crazy Idea\nStyle: book\nInclude: text, slides\nSlides Template: chalkboard\nOutput Folder: output\n\n[Outline]\nI: Introduction\nII: Literature Review\nIII: My Cool Idea\nA: Interesting Premise 1\n1: Underlying Facts\n2: Supporting Work\nB: Interesting Premise 2\nIV: Conclusion\n```\n\nThe names of the files should correspond to the names of subsections in the\nOutline with spaces replaced with underscores. If the operating system you use\nhas case-sensitive file names, all files should be named with lower case\nletters (and an extension of \".md\"). The above configuration file is from the\n`cento` tests folder. So, you can see how the markdown files are named inside\nthe tests folder in the \"test_project_book\" subfolder.\n\nSecond, write the content of your markdown files. The files may contain YAML\nfront-matter for specific instructions and settings related to that file. All\ngenerally applicable instructions and settings should be in the project\nconfiguration file.\n\nBy default, the sections of your markdown file should be named within \"\u003c\" and\n\"\u003e\":\n\n| divider | usage |\n| --- | --- |\n| \\\u003ctext\\\u003e | Contents of the book or article |\n| \\\u003cslides\\\u003e | Contents of slides accompanying the book or article |\n| \\\u003cnotes\\\u003e | Contents of notes or accompanying guidebook |\n\nYou do not have to have all of the section types. Any unmarked section will be\nassumed to be part of the book or article text.\n\nAny visualizations, images, charts, or graphs should be stored in a subfolder\ntitled \"visuals\" by default.\n\nThird, you run `cento` from the command line. If you are in the folder where\nyour configuration and markdown files are located, executing `cento` is simple:\n\n```sh\npython cento\n```\n\nIf you are in a different folder, you just need to list that after `cento` as\nfollows:\n\n```sh\npython cento {folder path}\n```\n\n## Contributing\n\nContributors are always welcome. Feel free to grab an\n[issue](https://www.github.com/WithPrecedent/cento/issues) to work on or make a\nsuggested improvement. If you wish to contribute, please read the [Contribution\nGuide](https://www.github.com/WithPrecedent/cento/contributing.md) and [Code of\nConduct](https://www.github.com/WithPrecedent/cento/code_of_conduct.md).\n\n## Similar Projects\n\n* [quarto](https://quarto.org/): an R based project for dynamically creating\nacademic publications from markdown files.\n\n## Acknowledgments\n\nI would like to thank the University of Kansas School of Law for tolerating and\nsupporting this law professor's coding efforts, an endeavor which is well\noutside the typical scholarly activities in the discipline.\n\n## License\n\nUse of this repository is authorized under the [Apache Software License\n2.0](https://www.github.com/WithPrecedent/cento/blog/main/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwithprecedent%2Fcento","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwithprecedent%2Fcento","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwithprecedent%2Fcento/lists"}