All Projects → Witiko → markdown

Witiko / markdown

Licence: LPPL-1.3c License
📔 A package for converting and rendering markdown documents in TeX

Programming Languages

TeX
3793 projects
Makefile
30231 projects

Projects that are alternatives of or similar to markdown

jlcode
A latex package for displaying Julia code using the listings package. The package supports pdftex, luatex and xetex for compilation.
Stars: ✭ 186 (-15.07%)
Mutual labels:  luatex, latex-package
latexemoji
Latex package to include emoji in Latex document
Stars: ✭ 17 (-92.24%)
Mutual labels:  latex, latex-package
tudscr
TUD-Script
Stars: ✭ 69 (-68.49%)
Mutual labels:  latex, latex-package
acro
acronyms for LaTeX 2e
Stars: ✭ 22 (-89.95%)
Mutual labels:  latex, latex-package
Markdown Latex
A markdown parser for converting markdown to LaTeX written in PHP.
Stars: ✭ 40 (-81.74%)
Mutual labels:  latex, markdown-parser
Franklin.jl
(yet another) static site generator. Simple, customisable, fast, maths with KaTeX, code evaluation, optional pre-rendering, in Julia.
Stars: ✭ 413 (+88.58%)
Mutual labels:  latex, markdown-parser
latex-action
GitHub Action to compile LaTeX documents
Stars: ✭ 123 (-43.84%)
Mutual labels:  latex, lualatex
Laravel Smartmd
🎯 A simple markdown editor compatible most markdown parse,You can choose any parse methods on server or client,like Mathematical formula、flowchart、upload image...
Stars: ✭ 76 (-65.3%)
Mutual labels:  latex, markdown-parser
context-mirror
Mirror of ConTeXt beta source code
Stars: ✭ 49 (-77.63%)
Mutual labels:  context, luatex
pseudocode.js
Beautiful pseudocode for the Web
Stars: ✭ 132 (-39.73%)
Mutual labels:  latex
TeXTemplates
LaTeX/XeLaTeX templates for academic publications: articles, dissertations, posters, and bachelor’s/master’s theses
Stars: ✭ 94 (-57.08%)
Mutual labels:  latex
react-wisteria
Managing the State with the Golden Path
Stars: ✭ 18 (-91.78%)
Mutual labels:  context
l3build
A testing and building system for LaTeX
Stars: ✭ 63 (-71.23%)
Mutual labels:  latex
WHUT-Bachelor
武汉理工大学本科生毕业设计(论文) LaTeX 模板 LaTeX Template for Bachelor's Degree Thesis at Wuhan University of Technology (WHUT)
Stars: ✭ 18 (-91.78%)
Mutual labels:  latex
templateestagiofga
Este repositório contém o template para a realização do relatório final da disciplina de estágio obrigatório da FGA - UnB em LaTeX
Stars: ✭ 22 (-89.95%)
Mutual labels:  latex
reason-markdown
VFMD (Vanilla-Flavoured Markdown) parser for Reason
Stars: ✭ 14 (-93.61%)
Mutual labels:  markdown-parser
i.upmath.me
Upmath LaTeX Renderer
Stars: ✭ 42 (-80.82%)
Mutual labels:  latex
newrelic-context
Contains different helpers to make life easier with NewRelic and Context.
Stars: ✭ 21 (-90.41%)
Mutual labels:  context
tex-equation-to-svg
Convert a TeX or LaTeX string to an SVG.
Stars: ✭ 34 (-84.47%)
Mutual labels:  latex
hesso-latextemplate-thesis
HES-SO//Master MSE thesis template
Stars: ✭ 26 (-88.13%)
Mutual labels:  latex

Markdown

license release docker pulls docker image size ci

The Markdown package converts markdown markup to TeX commands. The functionality is provided both as a Lua module, and as plain TeX, LaTeX, and ConTeXt macro packages that can be used to directly typeset TeX documents containing markdown markup. Unlike other convertors, the Markdown package does not require any external programs, and makes it easy to redefine how each and every markdown element is rendered. Creative abuse of the markdown syntax is encouraged. 😉

Your first Markdown document

Using a text editor, create an empty directory named workdir/. In it, create a text document named workdir/document.tex with the following content:

\documentclass{book}
\usepackage{markdown}
\markdownSetup{pipeTables,tableCaptions}
\begin{document}
\begin{markdown}
Introduction
============
## Section
### Subsection
Hello *Markdown*!

| Right | Left | Default | Center |
|------:|:-----|---------|:------:|
|   12  |  12  |    12   |    12  |
|  123  |  123 |   123   |   123  |
|    1  |    1 |     1   |     1  |

: Table
\end{markdown}
\end{document}

Next, run the LaTeXMK tool from our official Docker image on document.tex:

docker run --rm -v "$PWD"/workdir:/workdir -w /workdir witiko/markdown \
  latexmk -lualatex -silent document.tex

Alternatively, you can install TeX Live (can take up to several hours) and use its LaTeXMK tool:

latexmk -cd -lualatex -silent workdir/document.tex

A PDF document named workdir/document.pdf should be produced and contain the following output:

banner

Congratulations, you have just typeset your first Markdown document! 🥳

Use Markdown for continuous integration

Can't live without the latest features of the Markdown package in your continuous integration pipelines? It's ok, you can use our official Docker image as a drop-in replacement for the texlive/texlive:latest Docker image! The following example shows a GitHub Actions pipeline, which will automatically typeset and prerelease a PDF document:

name: Typeset and prerelease the book
on:
  push:
jobs:
  typeset:
    runs-on: ubuntu-latest
    container:
      image: witiko/markdown:latest
    steps:
      - uses: actions/checkout@v2
      - run: latexmk -lualatex document.tex
      - uses: marvinpinto/action-automatic-releases@latest
        with:
          title: The latest typeset book
          automatic_release_tag: latest
          prerelease: true
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          files: document.pdf

In fact, this is how we automatically produce the latest documentation for the Markdown package.

Peek under the hood

Remember how we said that the Markdown package converts markdown markup to TeX commands? Let's see what that means and what we can do with this knowledge.

Using a text editor, create an empty text document named document.md with the following markdown content:

Hello *Markdown*! $a_x + b_x = c_x$

Next, run the Lua command-line interface (CLI) from our official Docker image on document.md:

docker run --rm -i witiko/markdown markdown-cli hybrid=true < document.md

We will receive the following output, where the markdown markup has been replaced by TeX commands:

\markdownDocumentBegin
Hello \markdownRendererEmphasis{Markdown}!
$a\markdownRendererEmphasis{x + b}x = c_x$
\markdownDocumentEnd

We can see right away that the Markdown package has incorrectly interpreted _x + b_ as an emphasized text. We can fix this by passing in the underscores=false option:

docker run --rm -i witiko/markdown markdown-cli hybrid=true underscores=false < document.md
\markdownDocumentBegin
Hello \markdownRendererEmphasis{Markdown}!
$a_x + b_x = c_x$
\markdownDocumentEnd

Much better! If the Markdown package ever surprises you, use the Lua CLI to peek under the hood and inspect the results of the conversion.

Further information

For further information, consult one of the following:

  1. The user manual for either the released version or the latest development version, which can be produced by interpreting the markdown.ins file using a Unicode-aware TeX engine, such as XeTeX (xetex markdown.ins) or LuaTeX (luatex markdown.ins). The manual will reside in the file markdown.md and the CSS stylesheet markdown.css.
  2. The technical documentation for either the released version or the latest development version, which can be typeset by running the LaTeXMK tool on the markdown.dtx file (latexmk markdown.dtx) after installing the Markdown package. LaTeXMK should be included in your TeX distribution. The typeset documentation will reside in the file markdown.pdf.
  3. Tutorials and example documents by Lian Tze Lim at Overleaf:
  4. My journal articles published by TUGboat:
  5. Journal articles of me and my students published by CSTUG (in Czech and Slovak):
  6. My talks:

Acknowledgements

Logo Acknowledgement
I gratefully acknowledge the funding from the Faculty of Informatics at the Masaryk University in Brno, Czech Republic, for the development of the Markdown package.
Extensive user documentation for the Markdown package was kindly written by Lian Tze Lim and published by Overleaf.
Support for content slicing (Lua options shiftHeadings and slice) and pipe tables (Lua options pipeTables and tableCaptions) was graciously sponsored by David Vins and Omedym.

Contributing

Apart from the example markdown documents, tests, and continuous integration, which are placed in the examples/, tests/, and .github/ directories, the complete source code and documentation of the package are placed in the markdown.dtx document following the literate programming paradigm. Some useful commands, such as building the release archives and typesetting the documentation, are placed in the Makefile file for ease of maintenance.

When the file markdown.ins is interpreted using a Unicode-aware TeX engine, such as XeTeX (xetex markdown.ins) or LuaTeX (luatex markdown.ins), several files are produced from the markdown.dtx document. The make base command is provided by Makefile for convenience. In markdown.dtx, the boundaries between the produced files are marked up using an XML-like syntax provided by the DocStrip plain TeX package.

Running the LaTeXMK tool on the markdown.dtx file (latexmk markdown.dtx) after the Markdown package has been installed typesets the documentation. The make markdown.pdf command is provided by Makefile for convenience. In markdown.dtx, the documentation is placed inside TeX comments and marked up using the ltxdockit LaTeX document class. Support for typesetting the documentation is provided by the doc LaTeX package.

To facilitate continuous integration and sharing of the Markdown package, there exists an official Docker image, which can be reproduced by running the docker build command on Dockerfile (docker build -t witiko/markdown .). The make docker-image command is provided by Makefile for convenience.

Citing Markdown

When citing Markdown in academic papers and theses, please use the following BibTeX entry:

@article{novotny2017markdown,
  author  = {V\'{i}t Novotn\'{y}},
  year    = {2017},
  title   = {Using {M}arkdown Inside {\TeX} Documents},
  journal = {TUGboat},
  volume  = {38},
  number  = {2},
  pages   = {214--217},
  issn    = {0896-3207},
  url     = {https://tug.org/TUGboat/tb38-2/tb119novotny.pdf},
  urldate = {2020-07-31},
}

Alternatively, you can use the Novotny:2017:UMI key from the tugboat.bib BibTeX file that is included in your TeX distribution like this:

\cite{Novotny:2017:UMI}
\bibliography{tugboat}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].