... forgot the attachment. -- () ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments
-- -------------------------------------------------------------------------------- -- FILE: glossarium.lua -- USAGE: ConTeXt MkIV only -- DESCRIPTION: ad-hoc glossary -- AUTHOR: Philipp Gesang (Phg), <megas.kapan...@gmail.com> -- VERSION: 1.0 -- CREATED: 04/05/10 13:00:54 CEST -- REVISION: 1 -------------------------------------------------------------------------------- --
gloss = {} gloss.tracker, gloss.content = {}, {} function gloss.warn( text ) context.message( "== GLOSSARY: " .. text ) end function gloss.newgloss( keyword, entry ) if gloss.content[keyword] then gloss.warn( "Entry for " .. keyword .. " exists. Skipping." ) else gloss.content[keyword] = entry end end function gloss.usegloss( keyword, explained_here) if gloss.content[keyword] then local indstring = "glossind:" .. keyword if explained_here ~= "" and not gloss.tracker[keyword] then local refstring = "gloss:" .. keyword context.reference({ refstring }, "") gloss.tracker[keyword] = true end context.goto(keyword, {indstring}) else gloss.warn( "No entry for " .. keyword .. ". Skipping." ) end end function gloss.place_glossary () -- get all keywords and sort them local sort_me = {} for key, _ in pairs(gloss.content) do table.insert(sort_me, key) end table.sort(sort_me) -- pretty print them somehow for _, keyword in ipairs(sort_me) do local refstring = "gloss:" .. keyword local indstring = "glossind:" .. keyword context.noindentation() context.reference({ indstring }, "") context.bgroup() context.bf() --context.goto( keyword, { refstring } ) context(keyword) context.egroup() -- leave some space before entry context.hskip1em() context(gloss.content[keyword]) context.unskip() context(", (") context.at( "v.s. on p.", { refstring } ) context(").") context.par() end end
\setupinteraction[state=start] \ctxlua{dofile("glossarium.lua")} % Use \gloss#1#2 somewhere before \starttext, in a secondary file if you like. % #1: gloss reference key (used as index) % #2: the entry (explanation) \def\gloss#1#2{% \ctxlua{gloss.newgloss("#1", "\luaescapestring{#2}")} } \def\dousegloss[#1]#2{% \ctxlua{gloss.usegloss("#2", "#1")}% } % Use this in your text to create a reference to the glossary. % #1: optional, If this is the main passage where you explain the entry in detail, % the glossary will link back here. (Just make it non-empty.) % #2: the gloss key \unexpanded\def\usegloss{\dosingleempty\dousegloss} % This is meant to create the glossary after the text: % The gloss key is typeset in bold face and will reference the point in the % main text where \usegloss was called with a nonempty first arg. \def\placeglossary{\ctxlua{gloss.place_glossary()}} \starttext \gloss{glossary}{% A collection of glosses; a list with explanations of abstruse, antiquated, dialectal, or technical terms; a partial dictionary. (As defined by M.~Saunders)% } \gloss{index}{% An index (plural: indexes) is a list of words or phrases ('headings') and associated pointers ('locators') to where useful material relating to that heading can be found in a document. (As def'ed by the English Wikipedia) } test \usegloss{glossary} test. \page Here \usegloss{index} just occurs. \page The glossary entry \usegloss[exp]{index} is explained here. \page Here \usegloss{index} just occurs again. \footnote{Here \usegloss{index} just occurs again.} \page Here we'll deal with \usegloss[exp]{glossary} in detail. \page Here \usegloss{index} just occurs again. \page Here \usegloss{index} just occurs again. \page Here we mention \usegloss{glossary}. \page Here \usegloss{index} just occurs again. \page \placeglossary \stoptext
pgpL0Mg1DKcQ3.pgp
Description: PGP signature
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________