duminică, 9 septembrie 2012

LaTeX: miscelaneu

Instalarea pachetelor LaTeX în contextul distribuției MiKTeX

Sînt multe modalităti de a instala un pachet LaTeX în MikTeX. Una din ele este prin intermediul aplicației care vine împreună cu MikTeX - Package Manager (Start/All Programs/MiKTeX/Maintance (Admin)/Package Manager (Admin)).

Tehnoredactare în Unicode (MikTeX)

În primul este nevoie de un mediu de tehnoredactare care poate "înțelege" (deschide) corect fișierele în Unicode. De exemplu Texmaker (din păcate TeXnicCenter 1.0 RC nu este capabil de așa ceva).
  1. Instalați pachetul "ucs".
  2. În antetul fișierului LaTeX adăugați rîndul "\usepackage[utf8x]{inputenc}"
În caz că apare eroarea următoare.

! LaTeX Error: File `uni-global.def' not found.Type X to quit or to proceed,or enter new name. (Default extension: def)Enter file name:! Emergency stop. ...ni-global.def \else\input{uni-global.def}

Descarcati varianta arhiv a pachetul-ui ucs.. Copiați directoriul "data" din acest arhiv în "C:\Program Files\MiKTeX 2.9\tex\latex\ucs".  Actualizați baza de date cu nume de fișiere în MiKTeX cu ajutorul aplicației MiKTeX Options (Start/All Programs/MiKTeX/Maintance (Admin)/Settings (Admin)).

PGF/TikZ și GNUPLOT (Kile)

În linii generale pentru a putea utiliza TikZ împreună cu GNUPLOT este nevoie de următoarele
două condiții:

  1. GNUPLOT să fie instalat pe calculator
  2. TeX-ului trebuie să i se dea permisiunea de a executa programe externe.

Condiția 1 poate fi trecută cu vederea ... pînă cînd ))).
Dacă nu este 2 vă veți confrunta cu mesaje de eroare de tipul

Package pgf Warning: Plot data file `XX.table' not found. on input line YY.

Pentru cazul Linux/Kile (Sistem de operare/Mediu de TeXnoredactare) se procedează după cum urmează. Parcurgeți următorul lanț de itemi de meniu: Settings/Configure Kile.../Tools/Build;
și adăugați în zona "Options:"  opțiunea pentru linia de comandă "-shell-escape".

Instalarea pachetelor LaTeX (Ubuntu)

Cel mai des pachetele LaTeX sînt distribuite sub formă de colecție de fișiere, adică reprezintă un directoriu care conține un anumit număr de fișiere. În acestă colecție obligatori veți găsi două fișiere: unul cu extensia ".dtx", iar altul cu extensia ".ins".   
Eu obișnuesc să instalez pachetele LaTeX în directoriul "~/texmf/tex/latex", iar procedura de instalare poate fi descrisă în linii generale prin următoarea consecutivitate de comenzi.

cp foo/ ~/texmf/tex/latex/
cd ~/texmf/tex/latex/foo/
latex foo.ins
texhash ~/texmf

Pachete LaTeX pentru documente PDF interactive

Nu m-aș fi gîndid că există astfel de pachete dacă nu citeam articolul Interactive PDFs with LaTeX. A fost o surpriză plăcută care demonstrează încă odată cît de multe se poate de făcut folosind LaTeX.

  • attachfile - oferă posibilitatea de incorpora fișiere în documentul PDF, de exemplu imaginile în original sau cod sursă de program etc;
  • movie15 - adăugarea de fișiere video, audio și 3D obiecte în documentul PDF;
  • pdfpages - inserarea fișierelor .pdf în documentul final.

Link-uri utile: tutoriale

Online tutorials on LaTeX (Mi-a plăcut mult materialul privitor la Box-uri: Several Kinds of Boxes)

Traducerea contextelor Definition, Theorem etc. in română

\usepackage[romanian]{babel}
\deftranslation[to=romanian]{Definition}{Definiție}

miercuri, 15 februarie 2012

Java: from finite to infinite

In Mathematics there are properties/relations that holds in finite cases, but stops to work in infinite cases.
In common life one can buy a printer made in China and print 5-10 copies per day and the printer will wok to the end of his/her life, but if he/she wil try to print more than 100 copies every day the printer will broke soon.
Mathematics, ordinary life ...? Let's talk about Java!

Case 1. Reading files.
for(File file : fileList) {
  LineIterator it = FileUtils.lineIterator(file);
  while (it.hasNext()) {
     String line = it.nextLine();
     // do something with line
  }
}

For a small number of files the above code will work like a charm, but for a very large fileList, after some time and in some circumstances (depending on CPU, RAM, version of Java etc) we will get IOException: Too many open files.

Case 2. Executing commands.

for(String command : commandList) {
  Process p = Runtime.getRuntime().exec(command, null);
  p.waitFor();
}

The result will be the same as in Case 1 with the same IOException: Too many open files.

Case 3. Requesting URLs

... coming soon...

Solutions.

The exceptions from Case 1  and Case 2 may be avoided with a simple finally block where we must dispose/close some of the used objects.
Here we have the solution for the Case 1

for(File file : fileList) {
  LineIterator it = FileUtils.lineIterator(file, "UTF-8");
  try {
    while (it.hasNext()) {
      String line = it.nextLine();
      // do something with line
    }
  } finally {
    it.close();
  }
}
And in Remember to Close Your Streams When Using Java's Runtime.getRuntime().exec() we have the solution for the Case 2.
for(String command : commandList) {
  Process p = null;
  try {
    p = Runtime.getRuntime().exec(command, null);
    p.waitFor();
  } finally {
    if(p != null) {
      IOUtils.closeQuietly(p.getOutputStream());
      IOUtils.closeQuietly(p.getErrorStream());
      IOUtils.closeQuietly(p.getInputStream());
  }
}

marți, 14 februarie 2012

LaTeX și blogger.com (sau curriculum blogger)

În căutarea unei soluții simple pentru afișarea fomulelor în articole am trecut prin mai multe insuccese, de exemplu http://watchmath.com/vlog/?p=438.
Pînă cînd nu am dat de acest articol MathJax in Blogger (II)
Extraordinar!

$\sqrt{x^2} = |x|$

\[\int_a^b f(x)dx = F(b)-F(a)\]

\[\frac{1}{1-\frac{1}{1-\frac{1}{1-\frac{1}{...}}}}\]