create_cover.lua 4.1 KB
Newer Older
陆巍 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
--[[
    @file create_cover.lua
    @brief LaTeX封面代码生成文件
    @copyright MIT
    @author 陆巍
    @version 1.0.0
    @date 20221-02-27
--]]

-- 定义CreateCover类
CreateCover = {
  code = "",
}

function CreateCover:new(o, str)
  o = o or {}
  setmetatable(o, self)
  self.__index = self
  self.code = str
  return o
end

-- @brief 提取关键字内容
-- @param key 关键字
-- @param str 被提取字符串
-- @return 返回关键字对应内容
function GetValue(key, str, default)
  local str1 = string.gsub(str, ".*,%s*" .. key .. "%s*=%s*", "")
  if (str1 == str) then
    --print(key .. "\n")
    --print(str1 .. "\n\n")
    return default
  else
    return string.gsub(str1, "%s*,.*", "")
  end
end

-- @brief 生成LaTeX封面代码
function CreateCover:Create()
  -- 前后添加逗号,规范数据流格式,保证语句的适用性。
  local info = ", " .. self.code .. ","
  -- 获取封面编号(对于特殊字符需要加上%符号来匹配)
  local cover_number = GetValue("cover%-number", info, "1")
  -- 获取背景色
  local pgcolor = GetValue("pgcolor", info, "white")
  -- 获取标题1内容
  local title1 = GetValue("title1", info, " ")
  -- 获取标题1字体。默认为方正仿宋体
  local title1_font = GetValue("title1%-font", info, "fzfangsong-z02s")
  -- 获取标题2内容
  local title2 = GetValue("title2", info, " ")
  -- 获取标题2字体。默认为站酷文艺体
  local title2_font = GetValue("title2%-font", info, "zcoolwenyiti")
  -- 获取介绍1内容
  local intro1 = GetValue("intro1", info, " ")
  -- 获取介绍1字体。默认为方正书宋体
  local intro1_font = GetValue("intro1%-font", info, "fzshusong-z01s")
  -- 获取组织颜色
  local org_color = GetValue("org%-color", info, "OliveGreen")
  -- 获取组织1内容
  local org1 = GetValue("org1", info, " ")
  -- 获取组织1字体。默认为站酷文艺体
  local org1_font = GetValue("org1%-font", info, "zcoolwenyiti")
  -- 获取组织2内容
  local org2 = GetValue("org2", info, " ")
  -- 获取组织2字体。默认为站酷文艺体
  local org2_font = GetValue("org2%-font", info, "zcoolwenyiti")
  -- 获取组织2字体大小
  local org2_size = GetValue("org2%-size", info, "18")
  -- 获取介绍2内容
  local intro2 = GetValue("intro2", info, " ")
  -- 获取介绍2字体。默认为方正书宋体
  local intro2_font = GetValue("intro2%-font", info, "fzshusong-z01s")

  -- 读取create_cover.sty文件内容
  local fp = io.open("fir/create_cover/cover.tex", "r")
  -- local fp = io.open("cover.tex", "r")
  local contents = fp:read("*a")
  fp:close()
  

  -- 部分替换中会加入避免混淆的字符。
  -- 例如pgcolor,如果不加入“=“,就会与“\pgcolor“混淆
  contents = string.gsub(contents, "{pgcolor}", "{" .. pgcolor .. "}")-- 替换背景色
  contents = string.gsub(contents, "{title1}", "{" .. title1 .. "}")-- 替换标题1 
  contents = string.gsub(contents, "title1%-font", title1_font)-- 替换标题1字体
  contents = string.gsub(contents, "{title2}", "{" .. title2 .. "}")-- 替换标题2 
  contents = string.gsub(contents, "title2%-font", title2_font)-- 替换标题2字体
  contents = string.gsub(contents, "{intro1}", "{" .. intro1 .. "}")-- 替换介绍1 
  contents = string.gsub(contents, "intro1%-font", intro1_font)-- 替换介绍1字体
  contents = string.gsub(contents, "org%-color", org_color)-- 替换组织文字颜色 
  contents = string.gsub(contents, "{org1}", "{" .. org1 .. "}")-- 替换组织1 
  contents = string.gsub(contents, "org1%-font", org1_font)-- 替换组织1字体
  contents = string.gsub(contents, "{org2}", "{" .. org2 .. "}")-- 替换组织2 
  contents = string.gsub(contents, "org2%-font", org2_font)-- 替换组织2字体
  contents = string.gsub(contents, "org2%-size", org2_size)-- 替换组织2字体大小
  contents = string.gsub(contents, "{intro2}", "{" .. intro2 .. "}")-- 替换介绍2 
  contents = string.gsub(contents, "intro2%-font", intro2_font)-- 替换介绍2字体

  -- 写入文件
  local fp1 = io.open("cover_temp.tex", "w")
  fp1:write(contents)
  fp1:close()
end

--local cover = CreateCover:new(nil, "")
--cover:Create()