Commit ec4bcb48 authored by Hans Lundmark's avatar Hans Lundmark
Browse files

Lade till Calc-delen och ändrade stjärn-listor till minus-listor.

parent b080f210
Följande i .emacs, tillsammans med
#+LANGUAGE: se
i org-filen, gör att man får svenska citattecken vid LaTeX-export:
(eval-after-load "org-latex"
'(defun org-export-latex-quotation-marks ()
"Export quotation marks depending on language conventions."
(let* ((lang (plist-get org-export-latex-options-plist :language))
(quote-rpl (if (equal lang "se")
'(("\\(\\s-\\)\"" "''")
("\\(\\S-\\)\"" "''")
("\\(\\s-\\)'" "'"))
'(("\\(\\s-\\|[[(]\\)\"" "``")
("\\(\\S-\\)\"" "''")
("\\(\\s-\\|(\\)'" "`")))))
(mapc (lambda(l) (goto-char (point-min))
(while (re-search-forward (car l) nil t)
(let ((rpl (concat (match-string 1)
(org-export-latex-protect-string
(copy-sequence (cadr l))))))
(org-if-unprotected-1
(replace-match rpl t t))))) quote-rpl))))
----------------------------------------
Släng följande i din .emacs för att kunna exportera filen till Beamer/LaTeX
;; ---------------------------------------------------------------------
......
......@@ -4,49 +4,52 @@
#+MACRO: BEAMERCOLORTHEME lily
#+MACRO: BEAMERSUBJECT Emacs
#+TITLE: Bli mer effektiv med Emacs!
#+AUTHOR: Namn Namnsson
#+DATE: datum
#+AUTHOR: Andreas Ehliar, Johan Busk Eriksson, Hans Lundmark
#+DATE: 26 jan 2010
#+LANGUAGE: se
* Introduktion
** Upplägg
* Målgrupp: Vana emacs-användare
* Högt tempo för att hinna demonstrera många finesser
* Missar du något, kolla filmen eller presentationen på upplysningssidan
* En enkel .emacs kommer också dit för enkel test av diverse finesser som vi går igenom.
- Målgrupp: Vana emacs-användare
- Högt tempo för att hinna demonstrera många finesser
- Missar du något, kolla filmen eller presentationen på upplysningssidan
- En enkel .emacs kommer också dit för enkel test av diverse finesser som vi går igenom.
** Innehåll
* Trevliga finesser
* Makron
* Applikationer
- Trevliga finesser
- Makron
- Applikationer
* Trevliga finesser
** Hjälp
* C-h C-h
* Framförallt: Hjälp om nuvarande mode: C-h m
- C-h C-h
- Framförallt: Hjälp om nuvarande mode: C-h m
** Rectangular cut & paste
* Markera början av regionen som vanligt (C-SPACE)
* C-x r k Klipp ut
* C-x r y Klistra in
* C-x r t Ersätt med en ny sträng
- Markera början av regionen som vanligt (C-SPACE)
- C-x r k Klipp ut
- C-x r y Klistra in
- C-x r t Ersätt med en ny sträng
#Demo: Byt plats på två kolumner i lite hexdata
#Demo: Lägg till En "Address: " i början på alla rader ifrån hexdumpen.
** Krypterade filer
* Om du inte redan har en nyckel, skapa med gpg --keygen
* Spara filen som fil.gpg, välj vilken nyckel du vill använda.
* Lägg lämpligtvis in en -*- foobar -*- i din fil
- Om du inte redan har en nyckel, skapa med gpg -\,-keygen
- Spara filen som fil.gpg, välj vilken nyckel du vill använda.
- Lägg lämpligtvis in en -*- foobar -*- i din fil
# Demo: Öppna tenta.tex och spara som tenta.gpg
# FIXME: -- dyker upp som ett långt streck:
# DONE: -- dyker upp som ett långt streck:
# (Jag kom på en lösning. Alt.: "\,\!" funkar också om man vill ha
# mindre mellanrum. /Hans)
** generic-mode
* Problemställning: Ditt favoritfilformat stöds inte av emacs
* Lösning: generic-mode
- Problemställning: Ditt favoritfilformat stöds inte av emacs
- Lösning: generic-mode
#+BEGIN_LaTeX
\begin{lstlisting}[language=lisp]
......@@ -80,8 +83,8 @@
#+END_LaTeX
** re-builder
* Problemställning: Bygg ett komplicerat regexp
* Lösning: Bygg det interaktivt med M-x re-builder
- Problemställning: Bygg ett komplicerat regexp
- Lösning: Bygg det interaktivt med M-x re-builder
# Demo: M-x re-builder på en trevlig logfil
** Ediff/emerge
......@@ -129,6 +132,7 @@ fill-paragraph (M-q) radbryter paragrafen till 70 tecken (värdet på fill-colum
#+END_LaTeX
**** auto-fill på kommentarer i c-mode
CLOSED: [2010-01-21 Thu 22:43]
#+BEGIN_LaTeX
\begin{lstlisting}[language=lisp]
(add-hook 'c-mode-hook (lambda ()
......@@ -137,11 +141,20 @@ fill-paragraph (M-q) radbryter paragrafen till 70 tecken (värdet på fill-colum
\end{lstlisting}
#+END_LaTeX
** Quote:a tecken
### Mysko. Triggar org-mode på strängen "Quote:"?!? /Hans
** Quote:a tecken (buggelibugg på denna sida!)
*** Tabb ofta bundet till någon funktion
**** C-q tab
*** Även för tecken som saknas på tangentbordet
**** C-q 007 -> "bell"
** Med en annan rubrik funkar det!
*** Tabb ofta bundet till någon funktion
**** C-q tab
*** Även för tecken som saknas på tangentbordet
**** C-q 007 -> "bell"
** iswitchb, ido-mode
Alternativ till C-x b (switch-to-buffer)
*** Bufferurval minskas vartefter man skriver
......@@ -232,17 +245,17 @@ C-x C-f /user@host:filenamn
Shell-kommandon används av emacs i bland annat:
* M-x grep
* M-| (M-x shell-command-on-region)
* M-x compile (mer om detta senare)
- M-x grep
- M-| (M-x shell-command-on-region)
- M-x compile (mer om detta senare)
** M-x shell
Ditt favoritskal inuti emacs.
* Förra kommandot: M-y
* Nästa kommando: M-p
* Kräver enligt mig lite konfiguration för att bli användbart:
- Förra kommandot: M-y
- Nästa kommando: M-p
- Kräver enligt mig lite konfiguration för att bli användbart:
#+BEGIN_LaTeX
\begin{lstlisting}[language=lisp]
(custom-set-variables
......@@ -264,64 +277,243 @@ Ditt favoritskal inuti emacs.
* Makron
** Introduktion
* Egentligen själva hjärtat i emacs (Editing MACroS)
* Börja makro: F3 eller C-x (
* Avsluta makro: F4 eller C-x )
* Kör makro: F4 eller C-x e
* Kör makro och fortsätta editera: C-u F3
- Egentligen själva hjärtat i emacs (Editing MACroS)
- Börja makro: F3 eller C-x (
- Avsluta makro: F4 eller C-x )
- Kör makro: F4 eller C-x e
- Kör makro och fortsätta editera: C-u F3
** Standardtips för effektivare makroanvändning
* Om möjligt, börja makrot med exempelvis C-a eller C-e
* Flytta markören via exempelvis C-a, C-e, M-f, M-b eller C-s
* Undvik att flytta markören via piltangenterna
* Undo går bra att använda i makron
- Om möjligt, börja makrot med exempelvis C-a eller C-e
- Flytta markören via exempelvis C-a, C-e, M-f, M-b eller C-s
- Undvik att flytta markören via piltangenterna
- Undo går bra att använda i makron
# Demo: Gör ett makro som tar bort närmaste tag till vänster i ett
# HTML-dokument
** Namnge, spara och editera makron
* M-x name-last-kbd-macro
* M-x insert-kbd-macro
* M-x edit-kbd-macro
- M-x name-last-kbd-macro
- M-x insert-kbd-macro
- M-x edit-kbd-macro
#Demo: Namnge makrot du skapade tidigare, lägg in det i din .emacs
# Editera sedan makrot och spara det igen.
** Stegvis editering av senaste makrot
* M-x kmacro-step-edit-macro
* Interaktiv genomgång av makrot
* (Lite problem i samband med inkrementell sökning tyvärr)
- M-x kmacro-step-edit-macro
- Interaktiv genomgång av makrot
- (Lite problem i samband med inkrementell sökning tyvärr)
** Keyboard macro counter
* C-x C-k C-c Sätt räknaren till ett visst värde
* C-x C-k C-i Lägg in räknaren
- C-x C-k C-c Sätt räknaren till ett visst värde
- C-x C-k C-i Lägg in räknaren
# Demo: Skriv ut en punktlista
** Diverse andra tips
* Det kan vara kraftfullt att kombinera makron med användning av flera buffrar
* Kör ditt makro tills något går fel: C-u 0 M-x makronamn
- Det kan vara kraftfullt att kombinera makron med användning av flera buffrar
- Kör ditt makro tills något går fel: C-u 0 M-x makronamn
# Demo: Öppna /etc/passwd och formattera den vettigt
** Emacs istället för fula shell-script med sed, cut, awk, etc
* Emacs är inte så dumt för exempelvis textfiltrering/formattering
* Skapa lämpligt makro som editerar filen som du vill ha den
* Starta emacs -f mittmakro -f save-buffer -f kill-emacs
- Emacs är inte så dumt för exempelvis textfiltrering/formattering
- Skapa lämpligt makro som editerar filen som du vill ha den
- Starta emacs -f mittmakro -f save-buffer -f kill-emacs
# Demo: TBD
* Applikationer
** Dired
* Användbar som filhanterare
* Killer feature: M-x wdired-change-to-wdired-mode
* Editera buffern!
* C-c C-c för att byta namn på allt
- Användbar som filhanterare
- Killer feature: M-x wdired-change-to-wdired-mode
- Editera buffern!
- C-c C-c för att byta namn på allt
** Org och remember, I
** Org och remember, II
** Calc
- Avancerad stackbaserad miniräknare i emacs. Kan rita grafer
med hjälp av gnuplot.
- Starta med 'M-x calc'.
- Skriven av Dave Gillespie 1990--93 (helt i elisp).
- Den gamla versionen (2.02f) distribueras fortfarande med XEmacs.
(Några små uppdateringar av kompatibilitetsskäl, de senaste 2004.)
- Calc underhålls sedan 2001 inom ramen för GNU-projektet.
- En uppdaterad version medföljer GNU Emacs version 22.3 och högre.
(Inga stora ändringar här heller, men man har t.ex. infogat en
"Calc"-meny i menyraden, vilket är praktiskt eftersom det kan vara
svårt att komma ihåg de många tangentbindningarna.)
** Datatyper
- Godtyckligt stora heltal.
- Rationella tal (dvs bråk).
- Flyttal (i basen 10 internt) med godtycklig precision.
- Symboliska uttryck!
- Komplexa tal, matriser, intervall, datum, enheter, m.m.
** Att använda calc i calc-bufferten
| i | (info) | Öppna manualen i info-format. |
| U | (undo) | Ångra. |
| q | (quit) | Avsluta (gömmer calc-fönstret, |
| | | men bufferten finns kvar). |
| 1 2 3 SPC/RET | Talet 123 läggs på stacken. |
| SPC/RET ensamt | Översta talet på stacken dupliceras. |
| TAB | De två översta talen på stacken byter plats. |
| M-TAB | Tredje talet från toppen flyttas överst. |
Många andra kommandon finns för att komma åt eller flytta data på stacken.
** Att använda calc i calc-bufferten
| + | De två översta talen på stacken tas bort, och |
| | deras summa läggs på stacken istället. |
| | (Analogt för övriga räknesätt: $-$ * $/$ ^ .) |
| n | Negation: talet $x$ överst på stacken ersätts |
| | med $-x$. |
| Q | Kvadratrot (sQuare root): $x$ ersätts med $\sqrt{x}$. |
| E/L/S/C | $x$ ersätts med $e^x$ / $\ln x$ / $\sin x$ / $\cos x$. |
| I S | $x$ ersätts med $\arcsin x$ (prefix 'I' som i /Invers/). |
** Symboliska uttryck
Apostrof $\Rightarrow$ Inmatning av formel i minibufferten:
| ' x SPC y ^ 2 - 4 RET | Formeln $x y^2-4$ läggs på stacken.|
Prefix 'a' = ALGEBRAIC.
| a s | (simplify) | Förenkla. |
| a d | | Derivera (m.a.p. den variabel som calc frågar |
| | | efter i minibufferten). |
| a x | (eXpand) | Utveckla (multiplicera ut parenteser etc.). |
| a f | | Faktorisera polynom. (För heltal, använd 'k f'.) |
** Inställningar
| p | Ändra flyttalsprecision (calc frågar efter nytt |
| | värde i minibufferten). |
Prefix 'm' = MODE. Massor av inställningar, i stil med:
| m f | (fractions) | Växla mellan 1/2 = 1:2 (bråk) |
| | | och 1/2 = 0.5 (flyttal). |
| m d | (degrees) | Mät vinklar i grader. |
| m r | | Mät vinklar i radianer. |
| m m | | Spara inställningar i filen ~/.calc.el |
| | | för framtida sessioner. |
** Mera inställningar
Prefix 'd' = DISPLAY.
| d N | (normal) | Standardläge. |
| d B | (big) | "Prettyprinting". |
| d O | (one-line) | Matriser visas på en enda rad; |
| | | lättare att klippa och klistra. |
| d b | (break) | Slå av/på radbrytning i stacken. |
| d l | (line numbers) | Slå av/på radnumrering i stacken. |
| d C/F/L/W/M/... | Använd formelsyntax från | | |
| | C / Fortran / LaTeX / Maple / | | |
| | Mathematica / ... | | |
** Matriser
- Radvektor = lista = [1,2,3]
- Matris = lista av radvektorer = [[1,2,3],[4,5,6],[7,8,9]]
Prefix 'v' eller 'V' = VECTOR. T.ex.:
| 5 v p | (vector pack) | Packa de 5 översta elementen |
| | | på stacken i en vektor. |
| v u | (vector unpack) | Tvärtom. |
| v t | | Transponera matris. |
| V M <key> | (vector map) | På vektorn överst på stacken utförs |
| | | elementvis den operation som är |
| | | bunden till <key>. Man kan välja |
| | | <key>=apostrof och mata in en |
| | | funktion (med \$ på den oberoende |
| | | variabelns plats, t.ex. "\$^2+3"). |
** Variabler
Prefix 's' = STORE
| s s | (store) | Lagra uttrycket överst på stacken i en |
| | | variabel (calc frågar efter variabelnamnet i |
| | | minibufferten), och ta bort det från stacken. |
| s t | | Lagra, men låt det ligga kvar på stacken. |
| s r | (recall) | Hämta värdet av en variabel och lägg |
| | | överst på stacken. |
| s u | (unstore) | Återställ variabel till ursprungligt ("tomt") |
| | | tillstånd. |
| s + | Addera värde till variabel. (Analogt för övriga räknesätt.) |
| = | Varje variabel i uttrycket överst på stacken byts ut mot |
| | sitt lagrade värde ("tomma" variabler lämnas orörda). |
** Variabler
| s e | (edit) | Redigera en variabels värde i en temporär buffert. |
| s l | (let) | Calc frågar efter formel (av typen "x=5") och |
| | | substituerar det angivna värdet i uttrycket överst |
| | | på stacken. Värdet lagras ej permanent i den |
| | | angivna variabeln. |
- Fördefinierade variabler (med "magiska" värden som evalueras med
den valda flyttalsprecisionen): /pi/, /e/, /phi/ (gyllene snittet),
/gamma/ (Eulers konstant).
- Även /i/ (imaginära enheten, $i^2=-1$) är lite magisk.
** Selection mode
En finess i calc som saknas i många andra datoralgebrasystem är
möjligheten att gå omkring med markören i formler och operera på
markerade deluttryck (prefix 'j').
| j s | (select) | Markera minsta möjliga deluttryck |
| | | runt markören. |
| j m/l | (more/less) | Utvidga/krymp markeringen. |
| j u | (unselect) | Avmarkera den formel som markören |
| | | står på. |
| j c | (clear) | Avmarkera allt på hela stacken. |
| j d | (display) | Växla mellan att visa det markerade |
| | | eller allt som /inte/ är markerat. |
** Selection mode
| j n/p | (next/previous) | Flytta markeringen. |
| j R/L | (right/left) | "Dra" det markerade uttrycket åt |
| | | höger/vänster i formeln. |
| j C | (commute) | Byt plats på termer. |
| j D | (distribute) | Multiplicera in i parenteser, m.m. |
| j M | (merge) | Motsatsen till 'j D'. |
Reglerna som styr 'j D' och 'j M' finns i variablerna
DistribRules respektive MergeRules, som man kan modifiera
med egna regler om det skulle behövas. Exempel på hur
distributionsregler kan se ut:
- x * select(a + b) := x*select(a) + x*b,
- x / select(a + b) := 1 / (select(a)/x + b/x)
- exp(select(a + b)) := exp(select(a)) * exp(b)
** Att använda calc från andra buffertar
- Det finns flera kommandon för att flytta data mellan calc-bufferten
och andra buffertar.
- Man kan även använda calc för att manipulera uttryck direkt i t.ex.
en C-fil eller en LaTeX-fil. Prefix för sådan calc-relaterade
kommandon: 'C-x *' (förut 'M-#').
- Aktivera och avaktivera med 'C-x * e' (embed).
- Calc gissar lämpligt sätt att identifiera formler baserat på
buffertens mod (t.ex. $...$ för \TeX-filer).
- Den formel som markören står på läggs överst på stacken (som inte
syns, såvida inte calc-fönstret är öppet; 'C-x * o' öppnar det),
och uppdateras "live", dvs alla tangenttryckningar tolkas som
calc-kommandon så länge "embedded mode" är aktivt.
- Tabeller i org-mode + calc = kalkylark!
## LaTeX, inte \LaTeX
# men: \TeX, inte Tex
# !!!
# (Och varför exporteras den första kommentarsraden
# ovan ifall man bara har en brädgård istället för två?!?)
** Wanderlust
** Gnus
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment