diff options
author | Karl Berry <karl@freefriends.org> | 2013-09-06 23:12:07 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-09-06 23:12:07 +0000 |
commit | fd742022c0774507d86404341cfe78973fa971c0 (patch) | |
tree | 669fa0210e8efea18d74feab1d3b8aa48415e70f /Master/texmf-dist/doc/latex/latex-referenz/luabibentry.lua | |
parent | 4f31616977a64aadc3deb973b68e86b672b938ba (diff) |
latex-referenz (6sep13)
git-svn-id: svn://tug.org/texlive/trunk@31584 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/latex-referenz/luabibentry.lua')
-rw-r--r-- | Master/texmf-dist/doc/latex/latex-referenz/luabibentry.lua | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/latex-referenz/luabibentry.lua b/Master/texmf-dist/doc/latex/latex-referenz/luabibentry.lua new file mode 100644 index 00000000000..8fdceb2c8a7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/latex-referenz/luabibentry.lua @@ -0,0 +1,104 @@ +--- +--- This is file `luabibentry.lua', +--- generated with the docstrip utility. +--- +--- The original source files were: +--- +--- luabibentry.dtx (with options: `lua') +--- +--- Copyright (c) 2011 by Oliver Kopp <oliver.kopp.googlemail.com> +--- +--- This file was generated from file(s) of luabibentry distribution. +--- ----------------------------------------------------------------- +--- +--- This work may be distributed and/or modified under the conditions of +--- the LaTeX Project Public License, version 1.3c of the license. +--- The latest version of this license is in +--- http://www.latex-project.org/lppl.txt +--- and version 1.3c or later is part of all distributions of LaTeX +--- version 2005/12/01 or later. +--- +--- This work has the LPPL maintenance status "maintained". +--- +--- The Current Maintainer and author of this work is Oliver Kopp. +--- +--- This file may only be distributed together with the files listed in +--- `luabibentry.dtx'. You may however distribute the files listed in +--- `luabibentry.dtx' without this file. +--- +if (luatexbase and (luatexbase.provides_module)) then + luatexbase.provides_module({ + name = "luabibentry", + date = "2011/06/27", + version = "0.1", + description = "LuaLaTeX Package to Place Bibliography Entries in Text", + author = "Oliver Kopp", + licence = "LPPL v1.3c or later" + }) +end +module("luabibentry", package.seeall) +require("lualibs-file") + +-- stores all entries +local entries = {} + +-- builds the data by reading the given filename +function builddata(filename) + -- Parameters seem to be passed as arrays. + -- We access the first element of the parameter to get the filename + local file = io.open(filename[1], "r") + if file==nil then + texio.write_nl("luabibentry: could not open file " .. filename[1]) + return + end + local line = file:read("*line") + while (line~=nil) do + -- \bibitem is our marker for new entries + local i = string.find(line, "\\bibitem") + if i~=nil then + -- we expect the key in brackets in the same line + i = string.find(line,"{") + local lasti = 0 + -- we jump to the last bracket + while i~= nil do + lasti = i + i = string.find(line,"{",i+1) + end + local key = string.sub(line, lasti+1) + -- we use the text from the last opening bracket ("{") until + -- the end of the line minus one + -- we expect nothing more to follow in this line + key = string.sub(key, 1, string.len(key)-1) + -- the next lines are the entry + -- we expect an entry to be finished with a blank line + -- (or the end of the file) + line = file:read("*line") + local entry = "" + while (line~=nil) and (line~="") do + entry = entry .. line + line = file:read("*line") + end + -- remove the final dot (if present) + local entryLen = string.len(entry) + local lastChar = string.sub(entry, entryLen, entryLen) + if lastChar == "." then + entry = string.sub(entry, 1, entryLen-1) + end + entries[key]=entry + end + line = file:read("*line") + end + file:close() +end + +-- looks up the given key in the entries +-- in case an entry is not found, a bold question mark is printed +function bibentry(key) + local res = entries[key[1]] + if res==nil then + res = "\\textbf{?}" + end + tex.print(res) +end + + |