Literate programming tool using Markdown (since version 0.1) or LaTeX (since version 0.4) as markup languages and Tcl as programming language. Tcl code can be embedded directly in the text using single backticks or as code blocks using triple backticks. A good example is the extensive tutorial for the tmdoc::tmdoc package at http://htmlpreview.github.io/?https://github.com/mittelmark/DGTcl/blob/master/lib/tmdoc/tutorial/tmd.html * Author: [Detlef Groth] * Homepage: https://github.com/mittelmark/DGTcl/tree/master/lib * Download: https://github.com/mittelmark/DGTcl/archive/master.zip * Tutorial Markdown: http://htmlpreview.github.io/?https://github.com/mittelmark/DGTcl/blob/master/lib/tmdoc/tutorial/tmd.html * Tutorial LaTeX: https://github.com/mittelmark/DGTcl/blob/master/lib/tmdoc/latex/tmdoc-template.pdf * Manual: http://htmlpreview.github.io/?https://github.com/mittelmark/DGTcl/blob/master/lib/tmdoc/tmdoc.html * Version: 0.4 * License: MIT Usage: Intermixed Markdown or LaTeX markup and Tcl code in a tmd or .tnw file that can converted to Markdown/LaTeX using the tmdoc command line application. Afterwards the Markdown document can converted to other documentation formats like HTML, PDF or Unix manual pages for instance using the pandoc or pdflatex/xelatex command line tool. ====== tclsh tmdoc.tcl docu.tmd > docu.md # afterwards Markdown can be converted to HTML or PDF for instance using pandoc pandoc -i doc.md -s --highlight-style pygments -c dgw.css -o docu.html # processing a LaTeX command with backticked embedded Tcl code tclsh tmdoc.tcl docu.tnw --outfile docu.tex pdflatex docu.tex ====== '''Code chunks:''' Are starting after three backticks and a {tcl} indication of the programming language. Here an example: ====== ```{tcl echo=false} set x 1 puts $x ``` ====== Further short Tcl code can be embedded directly within the text using single backticks: ====== The curent date and time is: `tcl clock format [clock seconds] -format "%Y-%m-%d %H:%M"` ====== Should embed the current date and time in the text. The manual states as well support for images created from Tcl for instance using commands from [gdtcl] or the [canvas] widget. For more information have a look at the tutorial http://htmlpreview.github.io/?https://github.com/mittelmark/DGTcl/blob/master/lib/tmdoc/tutorial/tmd.html and the manual pages http://htmlpreview.github.io/?https://github.com/mittelmark/DGTcl/blob/master/lib/tmdoc/tmdoc.htm You can as well embed other programming languages like R if you use the knitr tool: So this is possible: Here some R code: ```{r} print("Hello R World!") ``` Now same document Tcl code: ```{tcl} puts "Hello Tcl World"; ``` If you mix R and Tcl you must first run tmdoc and afterwards https://yihui.name/knitr%|%knitr%|% . My Makefile for another tutorial looks like this: ====== default: tclkit tmdoc.tcl ../t3-tut.tmd > t3-tut.rmd echo "library(knitr);knitr::knit('t3-tut.rmd',output='t3-tut.md');" | R --slave pandoc -i t3-tut.md -s --highlight-style pygments -c ../dgw.css -o t3-tut.html ====== You can not start knitr first, as it can't handle Tcl commands. --- '''Changes:''' * 2020-02-19: 0.1 first release * 2020-02-21: 0.2 release ** puts -nonewline fix in the output ** outfile and tangle options ** manual page ready * 2020-02-23: 0.3 release ** fix for puts into channels * 2020-11-08: 0.4 release ** LaTeX support ** project moved to github '''See also:''' * [Source Documentation Tools] * [mkdoc::mkdoc] for doing the inverse embedding Markdown into Tcl code for creating source code documentation * [Literate programming] --- '''Discussion:''' Please discuss here ... [DDG] 2020-02-19: Please note, that this is a work in progress. I am open for suggestions. But tmdoc should basically have a reasonable subset of the functionality of R's Sweave https://stat.ethz.ch/R-manual/R-devel/library/utils/doc/Sweave.pdf and R markdown https://rmarkdown.rstudio.com/ <> Documentation