Latex #3

Įžanga

Kuomet norima pradėti rašyti su LaTeX, pradžioje yra išnagrinėjamos jo komandos ir, remiantis pavyzdžiais, pradedama rašyti paprasti dokumentai. Dabar norėčiau pasistūmėti nuo savo paskutinio įrašo apie LaTeX kiek toliau ir pasidalinti dokumento formatavimo su LaTeX patirtimi.

Dokumento struktūra, grafika ir tekstas

  1. Iliustracijai atvaizduoti visuomet naudokite \figure. Automatinis iliustracijų numeravimas vėliau jums labai atsipirks, kuomet reiks papildyti kokią iliustraciją dokumento pradžioje. Taip pat naudokite \figure ir kai norima atvaizduoti ne iliustraciją, o tarkim kokį grafiką ir netgi kodo fragmentą.
  2. Lentelėms sudaryti visuomet naudokite \table. Pradžioje bus truputi nepatogu surašinėti tiek daug teksto, norint atvaizduoti tik vieną lentelę, tačiau lentelės atvaizdavimas atrodys žymiai geriau ir tvarkingiau.
  3. Taip pat yra naudinga susidaryti dažniausiai naudojamų paketų sąrašą ir parašyti šabloninę latex bylą, kurioje būtų įtraukti visi tie paketai. Tai labai palengvina situacijas, kuomet reikia rašyti kelias ataskaitas toje pačioje srityje. Taip pat, sumažinama tikimybė kompiliavimo metu susidurti su kompiliavimo klaida ir garsiai nusikeikti.
  4. Kaip įmantriau, venkite naudoti `book` ir `report` dokumento tipus. `Book` dokumento tipas yra sunkiai keičiamas ir nėra toks lankstus, kaip tarkim `article` dokumento tipas. `Report` tipo dokumento tipas automatiškai sukuria titulinį puslapį, kurio stilius retai atitinka norimą variantą, todėl geriau naudoti `article` dokumento tipą, kuris leidžia rašyti norimo stiliaus titulinius puslapius. Vienintelis `article` tipo trūkumas: nėra \chapter tag’o. Tai didelė problema, kuomet tenka rašyti labai didelius darbus ir tiesiog neužtenka \subsubsection. Tokiose situacijose galima išsisukti naudojantis enumerate tipo sąrašu:
    \begin{enumerate}
      \item Tai kas netelpa į subsub
        Tolimesnis tekstas ...
      \item Ir paskutinis
        Tolimesnis tekstas ...
    \end{enumerate}
  5. Labai rekomenduoju pasinagrinėti pgfplots, tikz bibliotekų galimybes. Naudojant šitas bibliotekas galima visiškai atsisakyti būtinybės grafikus braižyti su kita programine įranga – net signalines laiko diagramas. Galimybių jos suteikia tikrai pakankamai. Pavyzdžiui, jeigu su kažkokia programine įranga sugeneravote duomenų sekas, tai užtenka kelių eilučių, norint atvaizduoti gautus duomenis ataskaitoje.
  6. Nebelieka būtinybės naudoti Excel’į ar kokią analoginę programinė įranga, norint sugeneruoti vieną kitą grafiką. Tokio metodo pagrindinis privalumas: kuomet pasikeičia duomenys – tereikia per naujo sugeneruoti latex bylą ir viskas – nauji duomenis atvaizduoti, kur Excel variantu reiktų jį atsidaryti, pakeisti duomenis, sugeneruoti grafiką, jį išsaugoti paveikslėlio formatu ir tik tuomet atnaujinti jį darbe.
  7. Tekstą rašyti geriausia yra ne teksto blokais, o `sakinys-eilutė` principu. Kuomet yra rašoma teksto blokais – klaidos taisymas paliks teksto bloke skylę arba teksto bloko eilutė tiesiog išsitęs. Rašant `sakinys-eilute` būdu, kiekviena klaida nepaliks didelių tarpų tarp teksto ir teksto redagavimas bus patogesnis, lengvesnis akims.

Išvados

Latex yra labai patogus sprendimas rašant tiek didelis, tiek mažus dokumentus. Šiuo metu net yra išleistas latex šablonas CV Europass formatui. Jeigu niekad nedirbot su Latex ir vis dar naudojate Office tipo programinius paketus, pažiūrėkit kokias galimybes suteikia Latex ir palyginkit su savo programine įranga.

Analizuojam signalus su python

Matlab DIE !!!

Taikyti python kasdieniams skaičiavimas pradėjau visai neseniai. Ankščiau mane labai tenkino ir octave ar calc ar maxima. Tačiau dabar, kai duomenų srauto atvaizdavimo poreikis kyla vis labiau, tenka ieškoti kitų galimų įrankių.

Pirma man atėjusi mintis ( kaip visad pirmosios mintys turi būti neteisingos ) buvo tiesiog pradėti rašyti savo programinį paketą. Tai užimtų amžius, bet galiausiai, pabaigoje turėčiau naudojamą įrankį.

Laiko stoka ir į pagalba tiesiog atėjo mano mylimas python! O su juo analizuoti signalus yra tikrai lengva panaudojus tiesiog vieną cmath modulį.

Ilgai nelaukiant, paimkime paprastą pavyzdį – neperiodinį, nesimetrinį signalą su faze. Tarkim mūsų signalas sklinda nuo 0 iki tau. Tuomet spektrinės analizės formulė atrodys

V(f) = A/(-i*2*pi*f)*(e**(-i*2*pi*f) -1)

Tikiuosi kas nors atpažįstate spektrinės analizės formą.

Kadangi dabar turim galutinę formulės formą, galima pradėti skaičiavimus! Paimkime amplitudę Atau = 2 V.

def result( f ):
  from cmath import pi, e, sqrt, polar
  A = 2. # 2V
  i = sqrt(-1)
  try:
    r, phi = polar ( A/(-i*2.*pi*f)*(e**(-i*2*pi*f) - 1) )
    return r, phi
  except ZeroDivisionError:
    return A, 0

Klaidos tikrinimą reikia daryti neatsitiktinai, o tikslingai, kadangi kai dažnis pasiekia nulį, mes turim dalinimą iš nulio, o tai sąlygoją klaidą. Kaip žinoma, funkcijos python gali gražinti keletą kintamųjų iškarto ir šiuo atvėju mums tai labai pagelbėja ( nors dirbančioje programoje turėjau išskaldyti r ir phi, dėl klaidos ).

Dabar teliko parašyti pagrindinę funkciją, kuri kreipiasi į mūsų parašytą ankstesnę funkciją.

def main():
  f = open("phase_shift_amplitude.dat", "w") # duomenu failas
  p = open("phase_shift_phase.dat", "w") # duomenu failas
  for fr in [x*0.001 for x in range(-3000,3001)]:
    r, phi = result(fr)
    print >>f, fr, r
    print >>p, fr, p

Galutinis, veikiantis variantas atrodo taip

#!/usr/bin/env python
def result ( f ):
  from cmath import pi, sqrt, polar
  A = 2. # 2V
  i = sqrt(-1)
  try:
    r, phi = polar ( A/(-i*2.*pi*f)*(e**(-i*2.*pi*f) - 1))
    return r
  except ZeroDivisionError:
    return A

def phiesult ( f ):
  from cmath import pi, e, sqrt, polar
  A = 2. # 2V
  i = sqrt(-1)
  try:
    r, phi = polar ( A/(-i*2.*pi*f)*(e**(-i*2.*pi*f) - 1))
    return phi
  except ZeroDivisionError:
    return 0

def main():
  import math
  f = open("phase_shift_amplitude.dat", "w") # duomenu failas
  p = open("phase_shift_phase.dat", "w") # duomenu failas
  for fr in [x*0.001 for x in range(-3000,3001)]:
    r = result(fr)
    phi = phiesult(fr)
    print >>f, fr, r
    print >>p, fr, phi

if __name__ == '__main__':
  main()

Dabar mes turime du failus su amplitudės ir fazės ( radianais ) skaitinėm vertėm. Teliko tik juos atvaizduoti. Tam galime pasitelkti gnuplot:

plot 'phase_shift_amplitude.dat' smooth frequency

plot 'phase_shift_phase.dat' smooth frequency

Arba LaTeX su pgfplots:

\begin{tikzpicture}
  \begin{axis} [
    width=500pt,
    height=230pt,
    grid=major,
    ylabel={$|V(f)|$},
    xlabel={$f, Hz$}
    ]
    \addplot[black] file {phase_shift_amplitude.dat};
  \end{axis}
\end{tikzpicture}\\
\textsl{Figure 1. Signal, with phase shift, amplitude spectrum.}\\

\begin{tikzpicture}
  \begin{axis} [
    width=500pt,
    height=230pt,
    grid=major,
    ylabel={$argV(f)$},
    xlabel={$f, Hz$}
    ]
    \addplot[black] file {phase_shift_phase.dat};
  \end{axis}
\end{tikzpicture}\\
\textsl{Figure 2. Signal phase, with phase shift.}\\

Asmeniškai aš daugiau esu linkęs prie Latex su pgfplots. Gnuplot labai geras įrankis greitam duomenų pateikimui. O jau atsakaitai geriausias įrankis yra LaTeX ( tikrų vyrų dokumentų tvarkyklė! ).

Automatinių Kompiuterių architektūros laboratorinių ataskaitų kodo paviešinimas

(via matmoon)

Pasibaigusiu studijų proga, paviešinu visus savo automatizacijos skriptus.

Kodėl tik dabar? Man patinka kai žmonės dirba, o ne vienas dirba, o kiti tik vaisius paima. Tikiuosi mintį supratote.

Ypatybės:

  1. Visuose laboratoriniuose generuojamas latex failas, kuris konvertuojamas į pdf. Įsitikinkite, kad turite pilną texlive ir littex paketą.
  2. Antram laboratoriniam naudojama awk. Siūlyčiau susipažinti su šito įrankio galia;
  3. Šeštam laboratoriniam tekstas yra verčiamas į paveikslėlį, kuris paskui įkeliamas į latex failą. Vertimui naudojamos pbmtext, pnmcrop, pnmpad komandos. Įsitikinkite, kad Jūsų sistemoje yra tokios komandos.

Laboratoriniai:

  1. Antras laboratorinis;
  2. Trečias laboratorinis;
  3. Ketvirtas laboratorinis;
  4. Penktas laboratorinis;
  5. Šeštas laboratorinis;

Latex #2

Toliau tęsiant įžangą į Latex dokumentų formavimą, galime įvertinti kodėl verta ir kodėl neverta naudotis latex. Galutinė nuomonė lieka skaitytojo pusėje, nes faktų mažai, reikia ir skonio.

Šiame įraše apžvelgsim:

  1. Antraštės formatavimą;
  2. Grafikų baižymą su pgfplots;

Kadangi wordpress.com sunku talpinti didelius kodo gabalus, juos pateiksiu kitoje tarnyboje. Atleiskite už nepatogumus.

Antraštės  formavimas

Dažniausiai užtenka ir latex nustatytos antraštės stiliaus, kuri atrodo taip:

Tokios antraštės kodas atrodo taip:

\title{Laboratorinis darbas nr. 5 \\ Virpesių kontūro tyrimas}
\author{Maksim Norkin EI-08/2}
\date{\today}
\maketitle

Kaikuriems dėstytojams to neužtenka ir jiems reikia kažko kitokio bendrai tvarkai palaikyti. Konkrečiai mūsų dėstytojas reikalauja tokios antraštės:

Skirtumas atrodo mažas, kaip ir pirmu atvėju, naudojamos 4 eilutės, tik apatinė dalis ne centruota, o paslinkta į dešinę pusę. Tokios antraštės kodas jau nebėra 4 eilutės, nes antraštę jau tenka pilnai aprašyti:

\begin{center}
\LARGE Tiristorinio optrono tyrimas\\[3mm]
\normalsize Laboratorinio darbo ataskaita\\[5mm]
\begin{flushright}
\normalsize Atliko: VGTU EI-08/2 gr. studentas Maksim Norkin\\
\normalsize \today
\end{flushright}
\end{center}

Kaip matome, kode nebeliko nei title, nei auhor nei date žymės. Norint latex’e išsaugoti senas formatavimo žymes, reikia apsirašyti stiliaus failiuką, kuris perrašys įprastines reikšmes. Stiliaus failiukus panagrinėsim kitame latex įraše.

Grafikai

Kiekvienam inžinieriui yra svarbūs grafikai. Tai patogus ir greitai vizuališkai suvokiamas būdas pateikti eksperimentų ar skaičiavimų duomenis. Paprastai, GUI programose ( OpenOffice, Microsoft Office ) reikia pasileisi kelias programas ir paskui prasideda miškai.. O tai daryti latex’e yra labai paprasta. Naudosime pgfplots, dėtalesnę informaciją apie šį paketą rasite pgfplots oficialiame žinyne. Svarbu prisiminti dar ir tai, kad pgfplots priklauso nuo tikz paketo ir be jo pgfplots neveikia.

Paimkime paprastą pavyzdį. Tarkim, paskaičiavime įmonėje darbo našumą ir gavome sekančius duomenis:

Norint pavaizduoti sekančius duomenis, pirma, dokumento antraštėje, turime nusakyti, kad vartosime pgfplots paketą ( kartu ir tikz paketą ):

\documentclass[11pt,a4paper]{article}
\usepackage[left=20mm,right=15mm,top=15mm,bottom=15mm]{geometry}
\usepackage[utf8x]{inputenc}
\usepackage[L7x]{fontenc}
\usepackage[lithuanian]{babel}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\end{document}

Po tokio veiksmo, galime jau pradėti naudotis grafikų braižymo paketu. Norint pavaizduoti DN_n stulpeio duomenis per 2007-2009 metus, kaip pavyzdį galime pasitelkti tokį kodą. Truputis kodo apžvalgos:

  • xtick = data pažymi tai, kad x ašis bus paskirstyta tik pagal užduotas reikšmės (2007, 2008, 2009 ), be tarpinių reikšmių;
  • ybar nurodo, kad bus stulpelinė diagrama;
  • bar width=30pt nurodo stulpelio plotį;
  • xlabel = {}, ylabel = {} x ir y ašies pavadinimai;
  • width = 400pt, height = 150pt grafiko ilgis ir plotis;
  • grid = major nurodo grafiko tinklinimą;

Ir mūsų aprašytas grafikas atrodys taip:

Kaip tai pilnai atrodo dokumente galite pažiūrėti sekančiame repozite.

Kol lentelė nėra labai didelė, tol visai gerai matosi duomenų santykiai. Kai jau lentelė tampa bent per pusę puslapio, tada jau sunkiau tampa lyginti.

Latex #1

Dokumentų tvarkyklės. Niekad gyvenime nepagalvojau, kad kažkada su malonumu darysiu laboratorinius, kursinius ir kitas rašliavas su kažkuom panašaus į latex.

Pirma pažintis prasidėjo dar pirmam kurse, kuomet vienas kursiokas pasakė, kad jų dėstytojas duoda pliusą už tai, jeigu ataskaita būna parengta latex kalba. Susidomėjau, pažiūrėjau, per daug painu, daugiau nebežiūrėjau. Bet kas mane paskatino grįžti prie latex knowledge didinimo? O gi tas pats laboratorinių darbų automatizavimas. Išties, turbūt šis dalykas padarė daugiausiai permainų mano gyvenime šiam semestre.

Instaliuoti jį ubuntu labai paprasta

sudo apt-get install texlive-full

Kas dėl jo mokymosi, tai kiekvieno dokumento pradžia būna beveik tokia pat. Viskas priklauso nuo to, keik paketų Jūs naudosite. Pvz, mano elektronikos kursiniam headeris labai ilgas, nes ten naudoju labai daug plotinimo paketų, mikroschemų braižymo paketas. O iš esmės, paprastas latex failiukas atrodytų taip:

\documentclass[11pt,a4paper]{article}
\usepackage[left=20mm,right=15mm,top=15mm,bottom=15mm]{geometry}
\usepackage[utf8x]{inputenc}
\usepackage[L7x]{fontenc}
\usepackage[lithuanian]{babel}
\begin{document}
\title{Antraštė}
\author{Šotkis Diodas}
\date{\today}
\maketitle
\section{Įvadas}
Mano batai buvo du …
\section{Puslaidininkinio diodo savybės}
O buvo taip. Atėjo senis pas senę..
\end{document}

Išsaugojam tokį failiuką bet kokiu vardu su tex plėtiniu, paleidžiam

pdflatex bet_koks_vardas.tex

Ir jis mums ramiai sugeneruoja pdf failiuką su mūsų tekstu.