Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
This file: http://angg.twu.net/dednat5/README.html (find-dn5 "README") Author: Eduardo Ochs <eduardoochs@gmail.com> Version: 2012jun11 License: GPL3 Note: the old documentation, that tried to look like a traditional README, is below, under the "--snip--"s. This draft-ish, work-in-progress-ish stuff above the "--snip--"s, has plans to become both a tutorial and a hands-on hackers guide when it grows up. By the way, the inspiration for the style comes from the sandboxes at: http://angg.twu.net/eev-current/eev-intro.el.html (find-eev "eev-intro.el") The single-file version of dednat5 ================================== The utility "build.lua" glues all modules together in a single file, "dednat5.lua": (find-dn5 "build.lua") (find-dn5 "dednat5.lua") To rebuild it, run the `find-dn5sh' sexp below: (find-dn5sh "rm -v dednat5.lua; lua5.1 build.lua && chmod 755 dednat5.lua") The Makefile can run build.lua too, but by default it will try to download and compile lua5.1 too, which is bad (this needs to be changed). See: (find-dn5 "Makefile" "dednat5.lua") The REPL ======== ...needs to be rewritten for the nth time, because its logic is too ugly - but it works. See: (find-angg ".emacs" "dednat5") (find-dn5 "repl.lua") * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "repl.lua" repl() = 2, 3, 4 = 2, 3 + 4 = !!! = (2 + 3 + 4) = (2 + 3 + 4) foo(bar) print(2, 3) print(2, ^C ^C ^D The demos ========= Dednat5 comes with a directory with several demos (a.k.a. tests): (find-dn5 "tests/") (find-dn5 "tests/Makefile") **This one is missing**, and I need to recover it from backups: (find-dn5 "tests/Makefile" "testrepl") LuaTeX ====== LuaTeX works only in utf-8 mode (ok, not really: it supports latin-1, but with a hack that is hard to use), and I use glyphs with evil char codes a lot, so at this moment I am not supporting LuaTeX - neither using it myself. Maybe later. (find-es "luatex") --snip--snip-- Some documentation ================== The URL: http://angg.twu.net/dednat4.html (find-TH "dednat4") has an overview of the previous version - dednat5 is a rewrite of dednat4 - and has several nice figures and blocks of code; it also has some sections about dednat5, so it's a good starting point. Please start by reading it! The documentation of dednat5 is very preliminary at the moment, to say the least... 8-\ The single-file version of dednat5 ================================== The utility "build.lua" glues all modules together in a single file, "dednat5.lua": (find-dn5 "build.lua") (find-dn5 "dednat5.lua") You only need the file dednat5.lua and the Lua interpreter to use dednat5. This should make it easy to run dednat5 in M$ Windows, but I know too little about W$ to try that myself. Running it ========== If you run, say, dednat5.lua foo.tex this will produce a file foo.dnt; you can then run: latex foo.tex and then you'll be done - but that "foo.tex" needs to be written correctly for things to work. Such a "foo.tex" should have a line like \input foo.dnt at some point between the "\documentclass" and the "\begin{document}"; it needs to be before "\begin{document}" because it contains lines like: \usepackage{proof} % For derivation trees ("%:" lines) and "\usepackage" can't be used after "\begin{document}". Here's an example of a ".tex" file and the corresponding ".dnt": (find-dn5 "tests/test1.tex") (find-dn5 "tests/test1.dnt") LaTeX packages you'll need ========================== You will need to have these latex packages installed: http://research.nii.ac.jp/~tatsuta/proof-sty.html http://www.dante.de/CTAN/help/Catalogue/entries/diagxy.html In Debian "proof.sty" is in the package "texlive-math-extra" and "diagxy.tex" is in "texlive-generic-extra". You will also need MetaPost for one of the demos; it is in "texlive-metapost". So do: sudo apt-get install texlive-math-extra sudo apt-get install texlive-generic-extra sudo apt-get install texlive-metapost The (basic) modules =================== If you want to play with the individual modules of dednat5 then it is better to fetch the tarball, from: http://angg.twu.net/dednat5/dednat5.tgz Each module has a section containing tests, that are not copied to the single-file version (dednat5.lua). (I need to document how to run the tests...) There are four low-level modules, all independent: (find-dn5 "common.lua") (find-dn5 "eoo.lua") (find-dn5 "parse.lua") (find-dn5 "prefixes.lua") These modules control how the ".tex" file is read and processed, and how the ".dnt" file is written: (find-dn5 "process.lua") (find-dn5 "preamble.lua") (find-dn5 "options.lua") (find-dn5 "treetex.lua") (find-dn5 "treesegs.lua") (find-dn5 "treehead.lua") (find-dn5 "diagstacks.lua") (find-dn5 "diagtex.lua") (find-dn5 "diagforth.lua") The MetaPost module =================== ...is not a module yet. Take a look at: (find-dn5 "tests/test2.tex" "metapost-head") (find-dn5 "tests/test2.mp") to see how the support for MetaPost (i.e., for "%M" lines) is implemented in less than 10 lines of Lua. Producing the pdf is harder, though: (find-dn5 "tests/Makefile" "test2") To compare the input with the output, use these links: (find-dn5 "tests/test2.tex" "metapost-diagram") (find-dn5 "tests/test2.mp" "metapost-diagram") http://angg.twu.net/dednat5/tests/test2.pdf Here are some links about MetaPost: http://www.tug.org/metapost.html http://tex.loria.fr/prod-graph/zoonekynd/metapost/metapost.html Extensions (some undocumented, some just planned) ================================================= A way to put subdiagrams in nodes: (find-LATEX "2011ebl-slides.tex" "BOX") Begriffsschrift notation: (find-dn5 "begriff.lua") (find-dn5 "tests/testbegr.tex") A command-line interface (a REPL), for hacking and debugging: (find-dn5 "repl.lua") Some Emacs tools ================ ...that need to be ported from dednat4 to dednat5: (find-angg ".emacs-tex.el" "diagskel") (find-angg ".emacs-tex.el" "dednames") (find-dn4 "dednames.lua") I am writing a minimal version of eev tailored to be used with dednat5: (find-dn5 "dednat-eev.el") but it is not ready yet. If you are interested ===================== ...Then get in touch! Questions and encouragement will certainly make me hurry up 8-). I'm <eduardoochs@gmail.com>, and if you don't mind making your questions public then please use the eev mailing list: http://lists.gnu.org/archive/html/eev/ (archives) http://lists.nongnu.org/mailman/listinfo/eev (subscription) http://news.gmane.org/gmane.emacs.eev.devel (gmane interface) (I haven't even announced dednat5 there yet...) Update ====== The current build.lua does not build a minimal dednat5.lua anymore - it builds a huge beast with all the experimental modules built in! It need Notes for myself ================ * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) cd ~/dednat5/ # (find-dn5 "Makefile") # (find-dn5 "tests/Makefile") make S=$S tgz touch preamble.lua make S=$S tgz make S=$S cleantests make S=$S cleandednat5 make S=$S test make S=$S veryveryclean make S=$S test make S=$S tgz make S=$S veryveryclean make S=$S tgz make S=$S test * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) # (find-dn5 "Makefile") # (find-dn5 "tests/Makefile") cd ~/dednat5/ make veryveryclean make S=$S LUA51_=$(which lua5.1) tgz make S=$S LUA51_=$(which lua5.1) test # (find-blogme3file "anggmake.lua" "dednat5.tgz") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) rm -Rv /tmp/dn5/ mkdir /tmp/dn5/ cd /tmp/dn5/ tar -xvzf ~/dednat5/dednat5.tgz make veryveryclean make S=$S LUA51_=$(which lua5.1) tgz # Announcements: # http://article.gmane.org/gmane.comp.lang.lua.general/78408 # http://lua-users.org/lists/lua-l/2011-04/msg00926.html -- Local Variables: -- coding: raw-text-unix -- ee-anchor-format: "«%s»" -- End: