Package: disseminate
DisseminateDisseminate is a document processing system and static site generator for
textbooks, books, novels, articles, reports and essays.Disseminate is a markup language, likeMarkdownorreStructuredText,
written in disseminate text format (.dm) that aims to have a simple and
consistent syntax, to produce clean and simple project structure and to contain
useful functionality for academic and non-academics. Projects may contain a
single document or a tree of interconnected documents comprising chapters,
raw data, figures and images in a source controlled repository. The Disseminate
software is coded inPython 3and disseminate projects can be converted to a
static website with.html,.txt,.tex,.pdfand.epubtargets.Documentation:https://docs.dissemia.org/projects/disseminate/en/latestMailing list:https://groups.google.com/g/disseminate-usageSource code:https://github.com/dissemia/disseminateBug reports:https://github.com/dissemia/disseminate/issuesSamplesAnna Kareninaby Leo TolstoyWar and Peaceby Leo TolstoyNMR Textbookby Justin LorieauFeaturesHeader and Body. Disseminate documents may optionally contain a YAML
header to configure a document and a body written in disseminate syntax.Document Trees. Projects can be as simple as one document, or it can
be a book comprising multiple parts and chapters.Uniform Language. All tags are written with a simple format
and all tags are allowed. Certain tags have enhanced typesetting
functionality, and tags may optionally have attributes to format how a tag
is rendered.ex:This is @b{my} sentence.or@img[width=40%]{src/figure-1.png}.Macros. Macros allow users to generate their own tags for repetitive
code fragments. These are specified in the document header and are available
to all sub-documents.Templates and Typography. A top priority for Disseminate is the
production of documents that follow good typographical style. Templates are
available for textbooks with Tufte formatting, books, novels, reports and
articles.Internal Labels. Labels to other documents, chapters, sections,
figures and tables are handled consistently and easily to create internal
links. The formatting of labels are either controlled by the template or,
optionally, defined by the user in document headers.Multiple Target Formats. Disseminate projects can be rendered as
websites (.html),.pdf,.epub,.txtor.tex.Automatic Conversions. The Disseminate includes a customized
build automation system. Disseminate's custom builder is tightly integrated
into Disseminate such that small changes are easily identified. This
system creates build recipes for converting files in the correct formats,
and it includes features similar to other build systems, likeScons, to
detect build changes based on source file signatures. The build system is
extensible and pluggable such that new features can be easily implemented.Inline Plots and Diagrams. Tags can handle raw data and code, which
are then automatically rendered into images, figures and diagrams.Equations. Tags for rendering equations in LaTeX format.ex:This equation, @eq{y = mx + b}, is inlineWebserver. A built-in webserver allows users to preview their
processed document projects.Version Control. Document projects are stored in source code
repositories, which enable the tracking of changes, the contribution of
multiple authors and the inclusion of raw data.Advanced FeaturesDocument Inheritance. Entries in a document's header will impact how
that document is rendered as well as how all of its sub-documents are
rendered.Target Attributes. Tag attributes may include target specifiers to
change how a tag is rendered in different target formats.ex:@img[width=80% width.html=40%]{figures/fig1.png}Label Formats. The rendering of label captions and reference links
can be customized for a document or for a project in the root document.Signals. Processing functions use a built-in ordered signals
framework to easily insert processing steps and to create plug-ins.Project ComparisonsSphinx and ReSTSphinxspecializes in code documentation whereas Disseminate focuses on the
general writing of books, articles, essays and reports.Disseminate's syntax is simple, uniform, easy to read and understandDisseminate's build system is integrated. Sphinx usesMake, which can
miss rebuilds of documents when documents are inter-related--with chapter
numbers and references, for example.Disseminate's build system is multithreaded, and its dependencies are built
implicitly. This means that a user doesn't have to worry about how
dependencies, like images or data, are converted or built.Disseminate's project structures are simple. A document project can be a
single file or a complex book, like 'War and Peace'. The objective is to
make document projects accessible to non-coders.Disseminate's templates focus on typography. Source code documentation
is designed to easily navigate between disparate pages and to present
potentially complicated text structures. Books, articles and reports are
long-form, and Disseminate focuses on readability and simplified,
non-obtrusive navigation.The Disseminate parser is intentionally simple so that others can easily
contribute to the project.PandocJekyll and HugoInstallationDisseminate is current available forMacOSandLinuxoperating systems.Disseminate can be  installed withpip,Homebrewor as a github
clone (Step 1). The base Disseminate installation can render documents
inhtml,txtandepubformats.Optional, additional dependencies may be installed (Step 2) to render
documents inpdfformat and to include converters (builders) in
different formats (Step 2).The following installation options require an open terminal in MacOS or Linux.Step 1: Disseminate (Base Installation)Option 1: Homebrew (MacOS and Linux)brewinstalldissemia/dissemia/disseminateOption 2: Pip (MacOS and Linux)pipinstalldisseminate(Optional)To render inpdfformat, install eitherMacTeX,TeXLiveor some other distribution. These and other dependencies can be installed with
a package manager likeHomebreworapt get install.Option 3: Github (MacOS and Linux)The github repository can be installed in a python virtual environment. The
base Disseminate project can be used to render documents inhtmlandepubformats.(Optional) Setup a virtual environment using python 3.7+mkvirtualenv-ppython3.7disseminateClone the github repositorygitclonehttps://github.com/dissemia/disseminate.gitInstall disseminatecddisseminate/
makeinstall## or python setup.py installStep 2: Additional DependenciesLaTeX with Homebrew (MacOS and Linux)Homebrew can be used to install a basic LaTeX distribution ofTeXLive.brewinstall--caskbasictex
bash--loginAfter installbasictex, additional LaTeX packages are install with
TeX Live.sudotlmgrupdate--self
sudotlmgrinstalleasylistenumitemtufte-latexLaTeX with TeX Live (MacOS and Linux)Alternatively,TeXLivecan be installed from theTeXLivewebsite. Once
installed, additional packages are installed as follows:sudotlmgrupdate--self
sudotlmgrinstalleasylistenumitemtufte-latexCheck External DependenciesDisseminate uses a variety of external tools to convert files and render
documents. If these tools are available, the corresponding converter (Builder)
will be available as well. To view which external dependencies were found
by Disseminate, type the following command.dmsetup--checkThe output should be similar to the following:Checkingrequireddependenciesfor'python'[PASS]Checkingalternativedependenciesfor'executables'[PASS]Checkingdependency'python3.6'[MISSING]Checkingdependency'python3.7'[PASS]Checkingdependency'python3.8'[PASS]Checkingdependency'python3.9'[PASS]Checkingrequireddependenciesfor'packages'[PASS]Checkingdependency'regex>=2018.11.22'[PASS]Checkingdependency'jinja2>=2.11'[PASS]Checkingdependency'lxml>=4.3.0'[PASS]Checkingdependency'python-slugify>=2.0.1'[PASS]Checkingdependency'pdfCropMargins>=0.1.4'[PASS]Checkingdependency'click>=7.0'[PASS]Checkingdependency'tornado>=6.1'[PASS]Checkingdependency'pygments >=2.6'[PASS]Checkingdependency'diskcache>=4.1'[PASS]Checkingdependency'pathvalidate>=2.2'[PASS]Checkingrequireddependenciesfor'image external deps'[PASS]Checkingalternativedependenciesfor'executables'[PASS]Checkingdependency'asy'[PASS]Checkingdependency'convert'[PASS]Checkingdependency'pdf2svg'[PASS]Checkingdependency'pdf-crop-margins'[PASS]Checkingdependency'rsvg-convert'[PASS]Checkingrequireddependenciesfor'pdf'[PASS]Checkingrequireddependenciesfor'executables'[PASS]Checkingalternativedependenciesfor'compilers'[PASS]Checkingdependency'pdflatex'[PASS]Checkingdependency'xelatex'[PASS]Checkingdependency'lualatex'[PASS]Checkingalternativedependenciesfor'package_managers'[PASS]Checkingdependency'kpsewhich'[PASS]Checkingrequireddependenciesfor'packages'[PASS]Checkingdependency'graphicx'[PASS]Checkingdependency'caption'[PASS]Checkingdependency'amsmath'[PASS]Checkingdependency'mathtools'[PASS]Checkingdependency'bm'[PASS]Checkingdependency'easylist'[PASS]Checkingdependency'fancyvrb'[PASS]Checkingdependency'hyperref'[PASS]Checkingdependency'enumitem'[PASS]Checkingdependency'geometry'[PASS]Checkingdependency'xcolor'[PASS]Checkingalternativedependenciesfor'fonts'[PASS]Checkingdependency'ecrm1200'[PASS]Checkingdependency'tcrm1200'[PASS]Checkingalternativedependenciesfor'classes'[PASS]Checkingdependency'article'[PASS]Checkingdependency'report'[PASS]Checkingdependency'tufte-book'[PASS]An entry withPASSindicates that the dependency was found. If a
dependency is missing, we recommend installing it withHomebreworapt install.UsageCreate a project directorymkdir-p~/Documents/Disseminate/test-project/srccd~/Documents/Disseminate/test-projectCreate a root documentecho"@chapter{My First Chapter}">src/index.dmStart the internal webserverdmpreview[2020-04-2213:36:08-0500][58827][INFO]Goin'Fast@http://127.0.0.1:8899[2020-04-2213:36:08-0500][58827][INFO]Startingworker[58827]Go tohttp://localhost:8899