Recent Changes - Search:

Oktatás

* Programozás 1
  + feladatsor
  + GitHub oldal

* Szkriptnyelvek
  + feladatsor
  + quick link

Teaching

* Programming 1 (BI)
  ◇ exercises
  ◇ quick link

* Scripting Languages
  ◇ exercises
  ◇ quick link

teaching assets


Félévek

* aktuális (2023/24/2)
* archívum


Linkek

* kalendárium
   - munkaszüneti napok '20
* tételsorok
* jegyzetek
* szakdolgozat / PhD
* ösztöndíjak
* certificates
* C lang.
* C++
* C#
* Clojure
* D lang.
* Java
* Nim
* Scala


[ edit | logout ]
[ sandbox | passwd ]

Py /

20141120a

autocompiler

LaTeX autocompiler

Amikor LaTeX-ben dolgozunk, egy tipikus workflow (munkamenet) a következőképpen néz ki: (1) nyitva van egy editor, ahol szerkesztjük a LaTeX forrást, (2) nyitva van egy terminál, ahol manuálisan fordítunk (pl. a pdflatex paranccsal), ill. (3) meg van nyitva egy PDF nézegető, ahol látjuk ez eredményt (pl. az okular, ami automatikusan frissít ha a PDF megváltozott).

A frusztrációt az okozza, hogy a változások megtekintéséhez mindig nekünk kell lefordítani a projektet.

Ötlet: készítsünk egy programot, ami folyamatosan figyeli a LaTeX forráskódot, s ha az módosul, akkor hajtson végre egy megadott parancsot.

LaTeX projekt fordításához érdemes egy bash szkriptet írni. Ennek a neve legyen pl. compile.sh. Normál esetben ezt hívogatjuk manuálisan. Az autocompiler.py programot tegyük mellé majd indítsuk el a következőképpen:

$ ./autocompiler.py main.tex compile.sh

Ez figyeli rövid időközönként a main.tex file-t, s ha annak megváltozott a módosítási dátuma, akkor meghívja a compile.sh szkriptet, ami előállítja az új PDF-et.

C autocompiler

Az ötlet általánosítható, s máshoz is fel lehet használni, nem csak LaTeX-hez. Fordíthatunk vele C forrást is. Tegyük fel, hogy egy hello.c állományon dolgozunk. Ekkor:

$ ./autocompiler.py hello.c "make hello"

Help

További ötletek

Egy LaTeX vagy egy C projekt esetén azért nem csak egy forrásfájl szokott lenni, így a szkript figyelhetne több állományt is. Példa:

$ ./autocompiler.py ".tex,.bib" compile.sh

Jelentése: az adott könyvtárból kiindulva figyeljük rekurzívan az összes *.tex és *.bib fájlt, majd ha bármelyik is módosult, fordítsuk újra a projektet.

A fájlrendszerben lévő változások figyeléséhez használhatunk egy erre specializált könyvtárat. Ilyen pl. a watchdog. A watchdog az operációs rendszer eseményeit (event-ek) figyeli, így nem nekünk kell az aktuális könyvtárat egy végtelen ciklusban állandóan rekurzíve szkennelni.

Cloud City

  

Blogjaim, hobbi projektjeim

* The Ubuntu Incident
* Python Adventures
* @GitHub
* heroku
* extra
* haladó Python
* YouTube listák


Debrecen | la France


[ edit ]

Edit - History - Print *** Report - Recent Changes - Search
Page last modified on 2014 December 01, 10:59