Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- This file:
--   http://anggtwu.net/LUA/Caepro1.lua.html
--   http://anggtwu.net/LUA/Caepro1.lua
--          (find-angg "LUA/Caepro1.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>
--
-- (defun e   () (interactive) (find-angg "LUA/Caepro1.lua"))
-- (defun c1  () (interactive) (find-angg "LUA/Caepro1.lua"))
-- (defun cl1 () (interactive) (find-angg "LUA/CaeproLisp1.lua"))

-- Material pra resposta pro CAEPRO

-- «.Jpg-and-Pdf»		(to "Jpg-and-Pdf")
-- «.Jpg-and-Pdf-tests»		(to "Jpg-and-Pdf-tests")
-- «.Quadros»			(to "Quadros")
-- «.Quadros-tests»		(to "Quadros-tests")
-- «.Semestre»			(to "Semestre")
-- «.Semestre-tests»		(to "Semestre-tests")
-- «.Sems»			(to "Sems")
-- «.Sems-tests»		(to "Sems-tests")
-- «.tabela_C2»			(to "tabela_C2")
-- «.Tabela»			(to "Tabela")
-- «.Tabela-tests»		(to "Tabela-tests")
-- «.tabela_C3»			(to "tabela_C3")
--
-- «.args»			(to "args")
-- «.ee-caepro-run»		(to "ee-caepro-run")


--      _                               _   ____     _  __ 
--     | |_ __   __ _    __ _ _ __   __| | |  _ \ __| |/ _|
--  _  | | '_ \ / _` |  / _` | '_ \ / _` | | |_) / _` | |_ 
-- | |_| | |_) | (_| | | (_| | | | | (_| | |  __/ (_| |  _|
--  \___/| .__/ \__, |  \__,_|_| |_|\__,_| |_|   \__,_|_|  
--       |_|    |___/                                      
--
-- «Jpg-and-Pdf»  (to ".Jpg-and-Pdf")
--
Jpg = Class {
  type = "Jpg",
  from = function (fname) return Jpg {fname=fname} end,
  __tostring = mytostring,
  __index = {
    open_cmd = function (j) return "xzgv ~/"..j.fname end,
    open = function (j) getoutput(j:open_cmd()) end,
    url = function (j) return "http://anggtwu.net/"..j.fname end,
  },
}

Pdf = Class {
  type = "Pdf",
  from = function (fname) return Pdf {fname=fname} end,
  __tostring = mytostring,
  __index = {
    open_cmd = function (p, n) return "xpdf -fullscreen ~/"..p.fname.." "..n end,
    open = function (p, n) getoutput(p:open_cmd(n)) end,
    url = function (p, n) return "http://anggtwu.net/"..p.fname.."#page="..n end,
  },
}

-- «Jpg-and-Pdf-tests»  (to ".Jpg-and-Pdf-tests")
--[[
* (eepitch-lua52)
* (eepitch-kill)
* (eepitch-lua52)
dofile "Caepro1.lua"
jp = Jpg.from "2022.2-C2/20220824-C2-1.jpg"
= jp:url()
= jp:open_cmd()
= jp:open()

pd = Pdf.from "2022.2-C2/C2-quadros.pdf"
= pd:url(12)
= pd:open_cmd(12)
= pd:open(12)

--]]




--   ___                  _               
--  / _ \ _   _  __ _  __| |_ __ ___  ___ 
-- | | | | | | |/ _` |/ _` | '__/ _ \/ __|
-- | |_| | |_| | (_| | (_| | | | (_) \__ \
--  \__\_\\__,_|\__,_|\__,_|_|  \___/|___/
--                                        
-- «Quadros»  (to ".Quadros")
-- (find-sh "cd ~/2022.2-C2/; for i in $(ls 2022*.png); do basename $i .png; done")
quadros_stems = function (dir, prefix)
    prefix = prefix or dir:sub(1, 4)
    local fmt = "cd ~/%s/; for i in $(ls %s*.jpg); do basename $i .jpg; done"
    local cmd = format(fmt, dir, prefix)
    return VTable(splitlines(getoutput(cmd)))
  end

Quadros = Class {
  type = "Quadros",
  from = function (dir, pdfstem)
      pdfstem = pdfstem or dir:sub(8).."-quadros"
      local pdfname = dir.."/"..pdfstem..".pdf"
      local stems = quadros_stems(dir)
      return Quadros {dir=dir, stems=stems, pdfname=pdfname}
    end,
  __index = {
    jpg = function (qs, n) return Jpg.from(qs.dir.."/"..qs.stems[n+0]..".jpg") end,
    pdf = function (qs) return Pdf.from(qs.pdfname) end,
    jpgurl = function (qs, n) return qs:jpg(n):url() end,
    pdfurl = function (qs, n) return qs:pdf():url(n) end,
    jpgopen = function (qs, n) return qs:jpg(n):open() end,
    pdfopen = function (qs, n) return qs:pdf():open(n) end,
    jpgopen_cmd = function (qs, n) return qs:jpg(n):open_cmd() end,
    pdfopen_cmd = function (qs, n) return qs:pdf():open_cmd(n) end,
    --
    url = function (qs, str)
        if str:match("^Q") then return qs:jpgurl(str:sub(2)) end
        if str:match("^q") then return qs:pdfurl(str:sub(2)) end
        error("Bad prefix: "..str)
      end,
    open_cmd = function (qs, str)
        if str:match("^Q") then return qs:jpgopen_cmd(str:sub(2)) end
        if str:match("^q") then return qs:pdfopen_cmd(str:sub(2)) end
        error("Bad prefix: "..str)
      end,
    open = function (qs, str)
        if str:match("^Q") then return qs:jpgopen(str:sub(2)) end
        if str:match("^q") then return qs:pdfopen(str:sub(2)) end
        error("Bad prefix: "..str)
      end,
  },
}

-- «Quadros-tests»  (to ".Quadros-tests")
--[[
* (eepitch-lua52)
* (eepitch-kill)
* (eepitch-lua52)
dofile "Caepro1.lua"
qs = Quadros.from("2019.2-C2", "2019.2-C2")
qs = Quadros.from("2022.2-C2", "C2-quadros")
qs = Quadros.from("2022.2-C2")
= qs.stems
= qs:jpg(1)
= qs:pdf()
= qs:jpgurl(1)
= qs:pdfurl(1)
= qs:url("Q12")
= qs:url("q12")
= qs:open("Q10")
= qs:open("q10")

--]]



--  ____                           _            
-- / ___|  ___ _ __ ___   ___  ___| |_ _ __ ___ 
-- \___ \ / _ \ '_ ` _ \ / _ \/ __| __| '__/ _ \
--  ___) |  __/ | | | | |  __/\__ \ |_| | |  __/
-- |____/ \___|_| |_| |_|\___||___/\__|_|  \___|
--                                              
-- «Semestre»  (to ".Semestre")
Semestre = Class {
  type = "Semestre",
  from = function (dir, pdfstem, semquadros)
      local tudostem = dir:gsub("%.", "-")
      local tudo = Pdf.from("LATEX/"..tudostem.."-tudo.pdf")
      local quadros = (not semquadros) and Quadros.from(dir, pdfstem)
      return Semestre {tudo=tudo, quadros=quadros, semquadros=semquadros}
    end,
  __index = {
    url = function (s, str)
        if str:match("^T") then return s.tudo:url(str:sub(2)) end
        if str:match("^[Qq]") then return s.quadros:url(str) end
        error("Bad prefix: "..str)
      end,
    open_cmd = function (s, str)
        if str:match("^T") then return s.tudo:open_cmd(str:sub(2)) end
        if str:match("^[Qq]") then return s.quadros:open_cmd(str) end
        error("Bad prefix: "..str)
      end,
    open = function (s, str)
        if str:match("^T") then return s.tudo:open(str:sub(2)) end
        if str:match("^[Qq]") then return s.quadros:open(str) end
        error("Bad prefix: "..str)
      end,
  },
}

-- «Semestre-tests»  (to ".Semestre-tests")
--[[
* (eepitch-lua52)
* (eepitch-kill)
* (eepitch-lua52)
dofile "Caepro1.lua"
sem = Semestre.from("2019.2-C2", "2019.2-C2")
sem = Semestre.from("2022.2-C2", "C2-quadros")
sem = Semestre.from("2022.2-C2")
= sem
PPV(sem)
= sem:url "T10"
= sem:url "Q10"
= sem:url "q10"
= sem.tudo
= sem.quadros


sems["2a"] = Semestre.from("2020.1-C2", "2019.2-C2")
sems["3a"] = Semestre.from("2020.1-C3", "2019.2-C3")

= sems["2x"]:open_cmd("T2")
= sems["2x"]:open_cmd("q2")

-- (defun find-2files (f1 f2) (find-2a `(find-fline ,f1) `(find-fline ,f2)))
-- (find-2files "~/2019.1-C2/" "/home/angg_slow_html/2019.1-C2/")
-- (find-2files "~/2019.1-C3/" "/home/angg_slow_html/2019.1-C3/")
-- (find-2files "~/2019.2-C2/" "/home/angg_slow_html/2019.2-C2/")
-- (find-2files "~/2019.2-C3/" "/home/angg_slow_html/2019.2-C3/")

-- (find-2files "~/2020.1-C2/" "/home/angg_slow_html/2020.1-C2/")
-- (find-2files "~/2020.1-C3/" "/home/angg_slow_html/2020.1-C3/")
-- (find-2files "~/2020.2-C2/" "/home/angg_slow_html/2020.2-C2/")
-- (find-2files "~/2020.2-C3/" "/home/angg_slow_html/2020.2-C3/")

-- (find-2files "~/2019.1-C2/" "/home/angg_slow_html/2019.1-C2/")
-- (find-2files "~/2019.1-C3/" "/home/angg_slow_html/2019.1-C3/")
-- (find-2files "~/2019.2-C2/" "/home/angg_slow_html/2019.2-C2/")
-- (find-2files "~/2019.2-C3/" "/home/angg_slow_html/2019.2-C3/")

-- (find-fline        "~/TH/2022-apresentacao-sobre-C2.blogme")
-- (find-sh "grep tudo ~/TH/2022-apresentacao-sobre-C2.blogme")
-- (find-sh "grep tudo ~/TH/2022-apresentacao-sobre-C2.blogme | sort")

--]]




--  ____                     
-- / ___|  ___ _ __ ___  ___ 
-- \___ \ / _ \ '_ ` _ \/ __|
--  ___) |  __/ | | | | \__ \
-- |____/ \___|_| |_| |_|___/
--                           
-- «Sems»  (to ".Sems")
Sems = Class {
  type = "Sems",
  __index = {
    def = function (sems, prefix, dir, pdfstem, semquadros)
        sems[prefix] = Semestre.from(dir, pdfstem, semquadros)
      end,
    split = function (sems, str)
        local prefix,rest = str:match("^([23][xyabcdefg]?)(.*)")
        if not prefix then error("Can't split: "..str) end
        if not sems[prefix] then error("Not an abbrev: "..prefix) end
        return prefix,rest
      end,
    semquadros = function (sems, prefix)
        return sems[prefix].semquadros
      end,
    url = function (sems, str)
        local prefix,rest = sems:split(str)
        return sems[prefix]:url(rest)
      end,
    open_cmd = function (sems, str)
        local prefix,rest = sems:split(str)
        return sems[prefix]:open_cmd(rest)
      end,
    open = function (sems, str)
        local prefix,rest = sems:split(str)
        return sems[prefix]:open(rest)
      end,
  },
}

-- «Sems-tests»  (to ".Sems-tests")
sems = Sems {}
defsems = function ()
    sems:def("2x", "2019.1-C2", "2019.1-C2")         --      2xq1 2xQ1
    sems:def("3x", "2019.1-C3", "2019.1-C3")         --      3xq1 3xQ1
    sems:def("2y", "2019.2-C2", "2019.2-C2")         -- 2yT1 2yq1 2yQ1
    sems:def("3y", "2019.2-C3", "2019.2-C3")         -- 3yT1 3yq1 3yQ1
    sems:def("2a", "2020.1-C2", nil, "sem quadros")  -- 2aT1
    sems:def("3a", "2020.1-C3", nil, "sem quadros")  -- 3aT1
    sems:def("2b", "2020.2-C2", nil, "sem quadros")  -- 2bT1
    sems:def("3b", "2020.2-C3", nil, "sem quadros")  -- 3bT1
    sems:def("2c", "2021.1-C2", nil, "sem quadros")  -- 2cT1
    sems:def("3c", "2021.1-C3", nil, "sem quadros")  -- 3cT1
    sems:def("2d", "2021.2-C2", nil, "sem quadros")  -- 2dT1
    sems:def("3d", "2021.2-C3", nil, "sem quadros")  -- 3dT1
    sems:def("2e", "2022.1-C2")                      -- 2eT1 2eq1 2eQ1
    sems:def("3e", "2022.1-C3")                      -- 3eT1 3eq1 3eQ1
    sems:def("2f", "2022.2-C2")                      -- 2fT1 2fq1 2fQ1
    sems:def("3f", "2022.2-C3")                      -- 3fT1 3fq1 3fQ1
    sems:def("2",  "2022.2-C2")                      --  2T1  2q1  2Q1
    sems:def("3",  "2022.2-C3")                      --  3T1  3q1  3Q1
  end


--[[
* (eepitch-lua52)
* (eepitch-kill)
* (eepitch-lua52)
dofile "Caepro1.lua"
defsems()
= sems:split("2yQ2")
= sems:url("2yQ2")
= sems:url("2yq2")
= sems:url("2yT2")
= sems:open_cmd("2yQ2")
= sems:open_cmd("2yq2")
= sems:open_cmd("2yT2")
= sems:open_cmd("2fq1")

-- 2fT1
-- 2fq1
-- 3fq1

ps = "2x 3x"
ps = "2y 3y"
rests = "T2 Q2 q2"

for _,p in ipairs(split(ps)) do
  for _,r in ipairs(split(rests)) do
    -- print(p, r)
    print(sems:open_cmd(p..r))
  end
end

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
xpdf -fullscreen ~/LATEX/2019-2-C2-tudo.pdf 2
xzgv ~/2019.2-C2/20190320_C22.jpg
xpdf -fullscreen ~/2019.2-C2/2019.2-C2.pdf 2
xpdf -fullscreen ~/LATEX/2019-2-C3-tudo.pdf 2
xzgv ~/2019.2-C3/20190815_C3_2.jpg
xpdf -fullscreen ~/2019.2-C3/2019.2-C3.pdf 2

--]]




--   ____ ____  
--  / ___|___ \ 
-- | |     __) |
-- | |___ / __/ 
--  \____|_____|
--              
-- «tabela_C2»  (to ".tabela_C2")
tabela_C2 = [=[
Aula 1    . 2T2       . 2q1,2Q1   .       . 24/aug .  Introdução: o carro e o macaco.
Aula 2    . 2T15      . 2q2,2Q2   .       . 25/aug .  Diferenciação e integração com o Mathologermóvel.
Aula 3    . 2T2,2T6   . 2q3,2Q3   . 16:00 . 31/aug .  Derivadas formais e a operação [:=].
Aula 4    . 2T2,2T14  . 2q6,2Q6   . 14:08 . 01/sep .  EDOs por chutar-e-testar.
Aula 5    .           .           .       . 07/sep .  feriado.
Aula 6    . 2T20,2T23 . 2q8,2Q8   . 14:05 . 08/sep .  Integração por partes. Sobre o ``+C'': p.4.
Aula 7    .           .           .       . 14/sep .  EBL. Vou repor esta aula no dia 26/set.
Aula 8    .           .           .       . 15/sep .  EBL. Vou repor esta aula no dia 04/out.
Aula 9    . 2T31      . 2q17,2Q17 . 16:00 . 21/sep .  Frações parciais.
Aula 10   . 2T49      . 2q19,2Q19 . 14:09 . 22/sep .  Mudança de variáveis. Integrais de potências de senos e cossenos.
Aula 10.5 .           . 2q21,2Q21 .       . 26/sep .  Aula de reposição (14:00-16:00 GP16)
Aula 11   . 2T55      . 2q22,2Q22 . 16:00 . 28/sep .  Substituição trigonométrica (1).
Aula 12   . 2T55      . 2q24,2Q24 . 14:00 . 29/sep .  Substituição trigonométrica (2).
Aula 12.5 .           . 2q26,2Q26 . 16:00 . 04/oct .  Aula de reposição (16:00-18:00 GP16)
Aula 13   . 2T60      . 2q27,2Q27 . 16:00 . 05/oct .  Somas de Riemann (1).
Aula 14   . 2T60      . 2q28,2Q28 . 14:09 . 06/oct .  Somas de Riemann (2).
Aula 15   .           .           .       . 12/oct .  feriado.
Aula 16   . 2T60      . 2q31,2Q29 . 14:09 . 13/oct .  Somas de Riemann (3).
Aula 17   .           .           .       . 19/oct .  Agenda Acadêmica.
Aula 18   .           .           .       . 20/oct .  Agenda Acadêmica.
Aula 19   . 2T89      . 2q33,2Q30 . 14:09 . 26/oct .  TFC1 e TFC2. Mudança de variável na integral definida.
Aula 20   . 2T89,2T97 . 2q35,2Q35 . 14:15 . 27/oct .  Funções não integráveis.
Aula 21   .           .           .       . 02/nov .  feriado.
Aula 22   . 2T98      . 2q36,2Q36 . 14:05 . 03/nov .  Volume de sólidos de revolução. Comprimento de arco.
Aula 23   . 2T100     . 2q39,2Q39 . 16:00 . 09/nov .  Campos de direções. EDOs com variáveis separáveis.
Aula 24   . 2T100     . 2q40,2Q40 . 14:06 . 10/nov .  Condições iniciais.
Aula 25   . 2T102     . 2q41,2Q41 . 16:00 . 16/nov .  EDOs lineares de ordens 1 e 2 com coeficientes constantes.
Aula 26   . 2T102     . 2q42,2Q42 . 14:03 . 17/nov .  Espaço de soluções. A álgebra das funções infinitamente diferenciáveis de R em R.
Aula 26.5 .           . sem foto  .       . 21/nov .  Aula de reforço (14:00-17:00 GP16)
Aula 27   . 2T102     . 2q45,2Q45 . 16:00 . 23/nov .  Revisão de números complexos.
Aula 28   .           . jogo da Copa .    . 24/nov .  Soluções reais para o problema da vibração amortecida.
Aula 28.5 .           . 2q47,2Q47 .       . 29/nov .  Aula de reforço (14:00-18:00 GP16)
          . 2T106     .           .       .        .  Dicas pra P1
Aula 29   . 2T108     . sem foto  .       . 30/nov .  P1
Aula 30   . 2T117     . 2q48,2Q48 . 14:15 . 01/dec .  EDOs exatas.
Aula 30.5 .           . 2q52,2Q52 .       . 06/dec .  Aula de reforço (14:00-18:00 GP16)
          . 2T119     .           .       . 04/dec .  Dicas pra P2
Aula 31   . 2T122     . sem foto  .       . 07/dec .  P2
Aula 32   . 2T128     . sem foto  .       . 08/dec .  VR
          . 2T131     .           .       . 11/dec .  Dicas pra VS
Aula 33.5 .           . sem foto  .       . 13/dec .  Aula de reforço (14:00-18:00 GP16)
Aula 34   .           . 2q53,2Q53 . 14:05 . 14/dec .  Revisão e dúvidas.
Aula 35   . 2T134     . 2q54,2Q54 . 14:08 . 15/dec .  VS
]=]


--   ____ _____ 
--  / ___|___ / 
-- | |     |_ \ 
-- | |___ ___) |
--  \____|____/ 
--              
-- «tabela_C3»  (to ".tabela_C3")
tabela_C3 = [=[
Aula 1     . 3T3,3dT2,3bT93      . 3q1,3Q1      .       . 24/aug . Revisão de pontos e vetores.
Aula 2     . 3T4                 . 3q2,3Q2      .       . 26/aug . Introdução ao vetor velocidade.
Aula 3     . 3T9                 . 3q3,3Q3      . 14:09 . 31/aug . Exercício da órbita (sem letras e números).
Aula 4     . 3T13                . 3q4,3Q4      .       . 02/sep . Tipos, e a velocidade como limite.
Aula 5     .                     .              .       . 07/sep . feriado.
Aula 6     .                     .              .       . 09/sep . Esta aula vai ser reposta no dia 27/set.
Aula 7     .                     .              .       . 14/sep . EBL. Esta aula vai ser reposta no dia 04/out.
Aula 8     .                     .              .       . 16/sep . EBL. Esta aula vai ser reposta no dia 25/out.
Aula 9     . 3T26                . 3q5,3Q5      . 14:11 . 21/sep . Fórmula de Taylor.
Aula 10    . 3T26                . 3q6,3Q6      . 14:02 . 23/sep . Fórmula de Taylor (cont.)
Aula 10.5  .                     . 3q7,3Q7      . 14:05 . 27/sep . Aula de reposição (14:00-16:00 GP16)
Aula 11    . 3T51                . 3q8,3Q8      . 14:03 . 28/sep . Funções reais de duas variáveis: gráficos e conjuntos de nível.
Aula 12    . 3T51                . 3q9,3Q9      . 14:10 . 30/sep . Funções reais de duas variáveis: gráficos e conjuntos de nível.
Aula 12.5  .                     . 3q10,3Q10    . 14:17 . 04/oct . Aula de reposição (14:00-16:00 GP16).
Aula 13    . 3T54                . 3q11,3Q11    . 14:12 . 05/oct . Plano tangente e reta normal.
Aula 14    . 3T54                . 3q12,3Q12    . 14:12 . 07/oct . Derivada direcional.
Aula 15    .                     .              .       . 12/oct . feriado.
Aula 16    . 3T63                . 3q14,3Q14    . 14:08 . 14/oct . Derivadas parciais.
Aula 17    .                     .              .       . 19/oct . Agenda Acadêmica.
Aula 18    .                     .              .       . 21/oct . Agenda Acadêmica.
Aula 18.5  .                     . 3q15,3Q15    . 14:10 . 25/oct . Aula de reposição (14:00-16:00 GP16).
Aula 19    . 3T63                . 3q16,3Q16    . 14:07 . 26/oct . Derivadas parciais e vetor gradiente.
Aula 20    . 3T74,3dT118         . 3q17,3Q17    . 14:01 . 28/oct . Diferencial total. Funções homogêneas.
Aula 21    .                     .              .       . 02/nov . feriado.
Aula 22    . 3T74,3eT43          . 3q18,3Q18    . 14:01 . 04/nov . Derivadas parciais de ordens superiores.
Aula 22.5  . 3T78                . ninguém veio .       . 08/nov . Aula extra: exercícios, revisão e dúvidas. Dicas pra P1.
Aula 23    . 3T76,3cT157,3cT169  . 3q19,3Q19    . 14:06 . 09/nov . Regra da cadeia.
           . 3T78                .              .       .        . Dicas pra P1
Aula 24    . 3T80                .              .       . 11/nov . P1.
Aula 25    . 3T86                . 3q20,3Q20    . 14:08 . 16/nov . Noções de conjuntos abertos e fechados no Rn.
Aula 26    . 3T86                . 3q22,3Q22    . 14:11 . 18/nov . Noções de conjuntos abertos e fechados no Rn.
Aula 26.5  .                     . 3q23,3Q23    .       . 21/nov . Aula de reforço (14:00-17:00 GP16)
Aula 27    . 3T103               . 3q24,3Q24    . 14:08 . 23/nov . Máximos e mínimos sobre um compacto.
Aula 28    . 3T105               . 3q26,3Q26    . 14:08 . 25/nov . Extremos relativos. Condição necessária para a existência de extremos relativos.
Aula 28.5  .                     .              .       . 29/nov . Aula de reforço (14:00-18:00 GP16)
Aula 29    .                     . 3q28,3Q28    . 14:09 . 30/nov . Ponto crítico. Teste da derivada segunda.
Aula 30    .                     . ninguém veio .       . 02/dec . Função diferenciável. Uma condição suficiente para diferenciabilidade.
           . 3T111               .              .       . 04/dez . Dicas pra P2
Aula 30.5  .                     . 3q29,3Q29    .       . 06/dec . Aula de reforço (14:00-18:00 GP16)
Aula 31    . 3T117               . 3q31,3Q31    . 14:15 . 07/dec . P2: PDF
Aula 32    .                     .              .       . 09/dec . VR. Transferida por causa do jogo!
Aula 33    . 3T123               . 3q32,3Q32    . 14:05 . 14/dec . VR.
Aula 34    .                     .              .       . 16/dec . Revisão e dúvidas. (não teve)
Aula 35    .                     .              .       . 21/dec . VS. (não teve)
]=]


--  _____     _          _       
-- |_   _|_ _| |__   ___| | __ _ 
--   | |/ _` | '_ \ / _ \ |/ _` |
--   | | (_| | |_) |  __/ | (_| |
--   |_|\__,_|_.__/ \___|_|\__,_|
--                               
-- «Tabela»  (to ".Tabela")
dotsplit = function (str, pat)
    local arr = {}
    local store = function (s) table.insert(arr, s); return "" end
    local last = string.gsub(str, pat or "(.-) %. ", store)
    store(last)
    return arr
  end
caepro_pat = "[23][xya-f]?[TQq]%d*"
caeproify1 = function (s) return "\\caepro{"..s.."}" end
caeproify = function (str) return (str:gsub(caepro_pat, caeproify1)) end

Tabela = Class {
  type = "Tabela",
  from = function (bigstr)
      local A = {}
      for li in bigstr:gmatch("[^\n]+") do
        local B = dotsplit(li)
        local C = map(bitrim, B)
        table.insert(A, C)
      end
      return Tabela(A)
    end,
  __tostring = function (ta) return mytostringv(ta) end,
  __index = {
    totabularbody = function (ta)
        local body = ""
        for _,A in ipairs(ta) do
          local B = map(caeproify, A)
          local li = "  "..table.concat(B, " & ").." \\\\\n"
          body = body..li
        end
        return body
      end,
  },
}

-- «Tabela-tests»  (to ".Tabela-tests")
--[==[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "Caepro1.lua"
PP(dotsplit("abc . def . ghi"))
= caeproify "foo 2q40,3fT32 bar"

ta = Tabela.from(tabela_C2)
= ta
= ta:totabularbody()

= Tabela.from(tabela_C2):totabularbody()

--]==]






--                      
--   __ _ _ __ __ _ ___ 
--  / _` | '__/ _` / __|
-- | (_| | | | (_| \__ \
--  \__,_|_|  \__, |___/
--            |___/     
--
-- «args»  (to ".args")
args = {...}
-- if args[1] == "-oc" then PP(args[2]) end
if args[1] == "-oc"  then defsems(); print(sems:open_cmd(args[2])) end
if args[1] == "-url" then defsems(); print(sems:url(args[2])) end



--  __  __       ___  _ 
-- |  \/  |     / _ \(_)
-- | |\/| |____| (_) | |
-- | |  | |_____\__, | |
-- |_|  |_|       /_// |
--                 |__/ 
--
-- «ee-caepro-run»  (to ".ee-caepro-run")
--[[
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
lua5.2 Caepro1.lua
lua5.2 Caepro1.lua -oc 2yT2
lua5.2 Caepro1.lua -oc 2yQ2
lua5.2 Caepro1.lua -url 2yQ2

(defun ee-caepro-oc (str)
  (find-sh0 (format "cd ~/LUA/; lua5.2 Caepro1.lua -oc %s" str)))

(defun ee-caepro-around-point () (ee-stuff-around-point "A-Za-z0-9"))

(defun ee-caepro-run (str)
  (interactive)
  (setq str (or str (ee-stuff-around-point "A-Za-z0-9")))
  (find-bgprocess (ee-caepro-oc str)))

(defun ee-caepro-debug (str)
  (interactive)
  (setq str (or str (ee-caepro-around-point)))
  (find-estring (ee-caepro-oc str)))

(defun eejump-9  () (ee-caepro-run nil))
(defun eejump-99 () (ee-caepro-debug nil))

;; (ee-caepro-oc  "2yT2")
;; (ee-caepro-run "2yT2")
;; (ee-caepro-oc  "2yfoo")
;; (ee-caepro-oc  "2q4")
;; (ee-caepro-debug  "2q4")
;; (ee-caepro-run "2yfoo")

;; 2yT2 2yQ2 2yq2




;; (find-c2q222page  1 "ago24: vídeo do Mathologer; derivação formal")
;; (find-c2q222page  2 "ago25: diferenciação e integração com o Mathologermóvel")
;; (find-c2q222page  3 "ago31: árvores, justificativas, [:=]")
;; (find-c2q222page  6 "set01: EDOs por chutar e testar")
;; (find-c2q222page  8 "set08: integração por partes")
;; (find-c2q222page 17 "set21: frações parciais")
;; (find-c2q222page 19 "set22: mudança de variáveis, ints pots sens e coss")
;; (find-c2q222page 21 "set26: aula de reposição")
;; (find-c2q222page 22 "set28: substituição trigonométrica (1)")
;; (find-c2q222page 24 "set29: substituição trigonométrica (2)")
;; (find-c2q222page 26 "out04: aula de reposição")
;; (find-c2q222page 27 "out05: somas de Riemann (1)")
;; (find-c2q222page 28 "out06: somas de Riemann (2), o que vamos ver hoje")
;; (find-c2q222page 29 "out06: somas de Riemann (2), (f(x1)+f(x2))/2")
;; (find-c2q222page 30 "out06: somas de Riemann (2), imagens de conjuntos finitos")
;; (find-c2q222page 31 "out13: somas de Riemann (3)")
;; (find-c2q222page 33 "out26: TFC1 e TFC2")
;; (find-c2q222page 35 "out27: TFC1 e TFC2 (2)")
;; (find-c2q222page 36 "nov03: áreas, volumes, e comprimento de arco")
;; (find-c2q222page 39 "nov09: EDOs com variáveis separáveis")
;; (find-c2q222page 40 "nov10: condições iniciais")
;; (find-c2q222page 41 "nov16: EDOLCCs")
;; (find-c2q222page 43 "nov17: EDOLCCs (2)")
;; (find-c2q222page 45 "nov23: Números complexos")
;; (find-c2q222page 47 "nov29: Aula de reforço")





3Q28


;; (find-c3q222page  1 "ago24: Revisão de pontos e vetores.")
;; (find-c3q222page  2 "ago26: Exercício da órbita.")
;; (find-c3q222page  3 "ago31: Exercício da órbita (sem letras e números).")
;; (find-c3q222page  4 "set02: Tipos; definição do vetor velocidade.")
;; (find-c3q222page  5 "set21: Séries de Taylor (1).")
;; (find-c3q222page  6 "set23: Séries de Taylor (2).")
;; (find-c3q222page  7 "set27: Aula de reposição.")
;; (find-c3q222page  8 "set28: Diagramas de numerozinhos 1.")
;; (find-c3q222page  9 "set30: Diagramas de numerozinhos 2.")
;; (find-c3q222page 10 "out04: Aula de reposição")
;; (find-c3q222page 11 "out05: Planos tangentes e retas normais.")
;; (find-c3q222page 13 "out07: Derivada direcional, mas antes outras coisas.")
;; (find-c3q222page 14 "out14: Derivadas parciais")
;; (find-c3q222page 15 "out25: Aula de reposição")
;; (find-c3q222page 16 "out26: Derivadas parciais, vetor normal, vetor gradiente")
;; (find-c3q222page 17 "nov04: Funções homogêneas e derivadas de ordem superior")
;; (find-c3q222page 19 "nov09: Regra da cadeia / matriz jacobiana")
;; (find-c3q222page 20 "nov16: Abertos e fechados")
;; (find-c3q222page 22 "nov18: Abertos e fechados (2)")
;; (find-c3q222page 23 "nov21: Aula de reforço")
;; (find-c3q222page 24 "nov23: Abertos, fechados e imagens inversas")
;; (find-c3q222page 26 "nov25: Máximos e mínimos locais por diagramas de sinais")
;; (find-c3q222page 28 "nov30: idem, mas fora do ponto (0,0)")
;; (find-c3q222page 29 "dez06: Aula de reforço")
;; (find-c3q222page 31 "dez07: P2")



--]]







-- Local Variables:
-- coding:  utf-8-unix
-- End: