Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- 2D ascii notation for the Begriffsschrift -- (find-books "__frege/__frege.el") -- (find-books "__frege/__frege.el" "heijenoort") -- I will include this into dednat4 at some point. -- (find-TH "dednat4" "quick-start") -- (find-fline "/usr/share/doc/texlive-doc/latex/begriff/README") -- (code-xpdf "begriffex" "/usr/share/doc/texlive-doc/latex/begriff/examples.pdf") -- (code-pdftotext "begriffex" "/usr/share/doc/texlive-doc/latex/begriff/examples.pdf") -- (find-begriffexpage 1 "Contents") -- (find-begriffexpage (+ 1 1) "Index") -- (find-begriffextext "") -- (find-fline "/usr/share/doc/texlive-doc/latex/begriff/examples.tex") -- (find-angg ".emacs" "eedn4a") -- (find-dn4ex "edrxmain41a.tex") -- (find-dn4exfile "edrxmain41a.tex" "begriff") nl1 = "\n " nl = nl1 -- nl="" is useful for some tests BGassert = function (body) return "\\BGassert "..body end BGnot = function (body) return "\\BGnot "..body end BGquant = function (v, body) return "\\BGquant{"..v.."}"..body end BGcond = function (antec, conseq) return "\\BGconditional{"..nl..antec..nl.."}{"..conseq..nl.."}" end BGterm = function (body) return "\\BGterm{"..body.."}" end BGstem = function (body) return "\\BGstem{"..body.."}" end BGbracket = function (body) return "\\BGbracket{"..body.."}" end BGlinewidth = function (len) return "\\setlength{\\BGlinewidth}{"..len.."}" end BGbeforelen = function (len) return "\\setlength{\\BGbeforelen}{"..len.."}" end BGafterlen = function (len) return "\\setlength{\\BGafterlen}{" ..len.."}" end -- For tests. dprint = function (body) print("%\015\n% (eedn4a-bounded)\n".. BGlinewidth("8em")..nl.. "MMMMMMMM\n\n".. body.. "\n\n".. BGbeforelen("0.5em")..nl.. body.. "\n\n".. BGafterlen("0.5em")..nl.. body.. "\n%\015") end -- A metatable hack to make (for example) -- str[3] return the third char of str (when str is a string). getmetatable("foo").__index = function (self, k) if type(k) == "number" then return string.sub(self, k, k) end return string[k] end -- The basic 2D functions. BGL = function (x, y) if BGlines[y][x] == "|" then return BGassert(BGH(x+1, y)) else return BGH(x, y) end end BGH = function (x, y) if BGlines[y][x] == "-" then return BGH(x+1, y) elseif BGlines[y][x] == "~" then return BGnot(BGH(x+1, y)) elseif BGlines[y][x] == "." then return BGcond(BGV(x, y+1), BGH(x+1, y)) elseif BGlines[y][x] == "(" then local _, newx = string.match(BGlines[y], "^(%b())()", x) if not _ then return "(?)" end local pstuff = string.sub(BGlines[y], x+1, newx-2) return BGquant(pstuff, BGH(newx, y)) else return BGterm(BGlines[y]:sub(x)) end end BGV = function (x, y) if BGlines[y][x] == "|" then return BGV(x, y+1) elseif BGlines[y][x] == "\\" then return BGH(x+1, y) else return "?" end end --[==[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) ee_dofile "~/LUA/begriff.lua" -- A 2D example: -- bigstr = [[ |-.-~--.- a | \- b \-(o).- c \-(\mathit{foo})- food ]] BGlines = splitlines(untabify(bigstr)) print(BGlines) = BGlines[1][1] dprint(BGL(1, 1)) -- Some older tests: dprint(BGcond("a", "b")) dprint(BGcond("a", BGcond("b", "c"))) dprint(BGcond("a", BGterm("b"))) dprint(BGcond(BGterm("a"), BGterm("b"))) dprint(BGassert(BGcond(BGcond(BGterm("a"), BGterm("b")), "c"))) dprint(BGassert(BGcond(BGcond(BGterm("a"), BGterm("b")), BGnot("c")))) dprint(BGassert(BGcond(BGcond(BGterm("a"), BGterm("b")), BGnot(BGquant("x", "c"))))) dprint(BGassert(BGcond(BGcond(BGterm("a"), BGterm("b")), BGnot(BGquant("\\mathit{x}", "foock"))))) PP(getmetatable("foo")) print(getmetatable("foo").__index) -- getmetatable("foo").__index = string = str[4] -- From the README of the begriff package: -- (find-fline "/usr/share/doc/texlive-doc/latex/begriff/README") -- \BGassert - generates an assertion sign -- \BGcontent - generates an assertion sign -- \BGnot - generates a negation sign -- \BGquant{v} - generates a universal quantifier with variable v -- \BGconditional{a}{c} - generates a conditional with antecendent -- a and consequent c. Note that in the Begriffsschrift, -- the antecendent is placed below the consequent. -- -- (the following three commands were introduced in version 1.5) -- -- \BGterm{x} - creates a right-justified terminal node x -- \BGstem{x} - inserts arbitrary LaTeX maths x into a non-terminal node -- \BGbracket{x} - places the expression x inside brackets -- -- You also have the normal resources of LaTeX math mode, and (if you -- have the amssymb package, AMS symbols) at your disposal; so, you can -- use \mathfrak{v} to get a fraktur character, \acute{v} to get a -- character with a slanting hat, and \alpha (etc.) to get greek letters. -- -- You can also tweak the appearance of the resulting material by -- modifying the values of the following lengths: -- -- \BGthickness - the thickness of lines (by default 0.4pt, -- bigger numbers = bolder) -- \BGbeforelen - the length of line inserted before a begriffsschrift symbol -- \BGafterlen - the length of line inserted after a begriffsschrift symbol -- \BGspace - the length of space inserted between begriffsschrift and -- normal maths -- -- (and, since version 1.5) -- -- \BGlinewidth - the total width of the diagram --]==] -- Local Variables: -- coding: raw-text-unix -- ee-anchor-format: "«%s»" -- End: