diff options
author | Karl Berry <karl@freefriends.org> | 2018-12-03 22:49:28 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-12-03 22:49:28 +0000 |
commit | 510cc1b8395f714ec6c1b7299cf73371563b1a16 (patch) | |
tree | ef1d3f055e87db8e906501a88ca550b861ac22e2 /Master/texmf-dist/scripts/xindex | |
parent | f855360800d3dd036378f102ca41cf5fa3e87db1 (diff) |
xindex (2dec18)
git-svn-id: svn://tug.org/texlive/trunk@49312 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts/xindex')
-rwxr-xr-x | Master/texmf-dist/scripts/xindex/xindex.lua | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/Master/texmf-dist/scripts/xindex/xindex.lua b/Master/texmf-dist/scripts/xindex/xindex.lua new file mode 100755 index 00000000000..83ade61e03e --- /dev/null +++ b/Master/texmf-dist/scripts/xindex/xindex.lua @@ -0,0 +1,176 @@ +#!/usr/bin/env texlua +----------------------------------------------------------------------- +-- FILE: xindex.lua +-- DESCRIPTION: create an index +-- REQUIREMENTS: +-- AUTHOR: Herbert Voß +-- LICENSE: LPPL 1.3 +----------------------------------------------------------------------- + + xindex = xindex or { } + local version = 0.05 +xindex.version = version +--xindex.self = "xindex" + +--[[doc-- + +xindex(1) + +This file is provided under the terms of the LPPL v1.3 or +later as printed in full text in the manual (xindex.pdf). + +\url{https://ctan.org/license/lppl1.3}. + +Report bugs to + + \url{https://gitlab.com/hvoss49/xindex/issues}. + +--doc]]-- + +kpse.set_program_name("luatex") + +require("lualibs") -- all part of LuaTeX +require('unicode') +require('string') +require("lpeg") + + +local args = require ('xindex-lapp') [[ + parameter handling + -q,--quiet + -h,--help + -v... Verbosity level; can be -v, -vv, -vvv + -c,--config (default cfg) + -e,--escapechar (default ") + -n,--noheadings + -o,--output (default "") + -l,--language (default en) + <input> (string) +]] + + +--[[ + No -v flag, v is just { false }. not args.v[1] is true, so vlevel becomes 0. + One -v flags, v is { true } + Two -v flags, v is { true, true } + Three -v flags, v is { true, true, true } +]] + +vlevel = not args.v[1] and 0 or #args.v +not_quiet = not args["quiet"] + +--[[ +if args.h then +print( +Syntax: xinput [options] <file> +By default the Lua program "xindex" creates a so-called +.ind file, which has the same main filename as the input file +unless you are using the option "-o <output file>" There will +be no log file created. +) +end +]] + + +--[[ +if not args["input"] then + io.write ("Filename: ") + inFile = io.read() +else + inFile = args["input"] +end +]] + +require('xindex-lib') + +inFile = args["input"] +if not file_exists(inFile) then + if file_exists(inFile..".idx") then + inFile = inFile..".idx" + else + writeLog(2,"Inputfile "..inFile.." or "..inFile..".idx not found!\n",0) + os.exit() + end +end + +local filename +local logfilename +if args["output"] == '""' then + if inFile:sub(inFile:len()-3,inFile:len()) == ".idx" then + filename = inFile:sub(1,inFile:len()-3).."ind" + logfilename = inFile:sub(1,inFile:len()-3).."ilg" + else + filename = inFile..".ind" + logfilename = inFile..".ilg" + end +else + filename = args.output + logfilename = filename:gsub('%p...','')..".ilg" +end + +logFile = io.open(logfilename,"w+") +writeLog(2,"xindex v."..version.." (c) Herbert Voß\n",-1) +writeLog(1,"Verbose level = "..vlevel.."\n",1) + +writeLog(2,"Open outputfile "..filename,0) +outFile = io.open(filename,"w+") +writeLog(2," ... done\n",0) + +if vlevel > 0 then + writeLog(1,"---------- parameter ----------\n",1) + for k,v in pairs(args) do + writeLog(1,tostring(k)..", "..tostring(v).."\n",1) + end + for k=1,#args.v do + writeLog(1,"v["..k.."]= "..tostring(args.v[k]).."\n",1) + end + writeLog(1,"---------- parameter ----------\n",1) +end + +writeLog(2,"Using input file: "..inFile.."\n",0) + +writeLog(2,"Loading common config file ".."xindex-cfg-common\n",1) +Config_File_Common = kpse.find_file("xindex-cfg-common.lua") +cfg_common = require(Config_File_Common) + +local config_file = "xindex-"..args.config..".lua" +writeLog(2,"Loading local config file "..config_file,0) +Config_File = kpse.find_file(config_file) +cfg = require(Config_File) +writeLog(2," ... done\n",0) + +local esc_char = args.escapechar +writeLog(2,"Escapechar = "..esc_char.."\n",1) +escape_chars = { -- by default " is the escape char + {esc_char..'"', '//escapedquote//', '\\"{}' }, + {esc_char..'@', '//escapedat//', '@' }, + {esc_char..'|', '//escapedvert//', "|" }, + {esc_char..'!', '//scapedexcl//', '!' } +} + +language = string.lower(args["language"]) +writeLog(2,"Language = "..language.."\n",1) +index_header = indexheader[language] +if vlevel > 0 then for i=1,#index_header do writeLog(2,index_header[i].."\n",1) end end +page_folium = folium[language] + + +no_headings = args["noheadings"] +if no_headings then + writeLog(1,"Output with NO headings between different first letter\n",1) +else + writeLog(1,"Output with headings between different first letter\n",1) +end + +writeLog(2,"Open outputfile "..filename,0) +outFile = io.open(filename,"w+") +writeLog(2,"... done\n",0) + + +writeLog(1,"Starting base file ... \n",2) +BaseRunFile = kpse.find_file("xindex-base.lua") +dofile(BaseRunFile) + +logFile:close() + + |