emacs = Escape Meta Alternate Control Shift?

Eure Spielwiese.


Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

emacs = Escape Meta Alternate Control Shift?

Beitrag von KOMA »

Gerade habe ich in einer Leser-Renzension auf amazon mal wieder gelesen, dass emacs dieser furchbare Editor wäre, den man nur mit Hilfe einer Meta-Taste und der Tastatur bedienen können. Gerade LaTeX-Anwender stellen sich ja häufig die Frage, welcher Editor für LaTeX gut geeignet ist. In diesem Zusammenhang ist dann die Frage ob obige Behauptung denn stimmt.

Tatsache ist, dass emacs eine lange, lange Geschichte hat. Ursprünglich war emacs in erster Linie eine Plattform für lisp, die auch einen in lisp programmierten Editor enthielt. In seiner Anfangszeit verwendete man für die Eingabe in erster Linie ein reines Textterminal. Das beste was so ein Terminal zustande brachte war eine inverse oder eine hell hervorgehobene Darstellung. emacs schaffte es, mit diesen wenigen Elementen mehrere logische Einheiten auf das Terminal zu bringen. So gab es einen mehrzeiligen Eingabebereich, eine Statuszeile und einen weiteren Eingabebereich, in dem man Befehle absetzen konnte. Der eigentliche, mehrzeilige Eingabebereich konnte bereits damals weiter unterteilt werden, um mehrere Dateien gleichzeitig editieren und sogar Ausgaben von Programmaufrufen u. ä. angezeigt zu bekommen. Diese getrennten Bereiche hießen und heißen heute noch immer screens. Um die vielen Möglichkeiten von emacs damals nutzen können, musste man sich Tastaturkürzel bedienen. Die Maus gab es damals nicht. Weil emacs so mächtig war, gab es extrem viele Tastenkürzel. Für Direkteingaben war Control zusammen mit einer Zeichentaste und ggf. zusätzlich noch Shift zu drücken. Mehrstufige Kürzel waren durchaus üblich. Befehle konnte man in die Befehlszeile eingeben, indem man zuvor Escape drückte oder Meta und X. Auch manche Direktaktion wurde zusammen mit Meta ausgelöst. In der emacs-Schreibweise war dann Control-c beispielsweise C-c, Control-Shift-C einfach nur C-C. Das Kürzel zum Öffnen einer Datei, Control-x Control-f, wäre in emacs-Schreibweise also einfach C-x C-f.

Leute, die heute über emacs herziehen, beziehen Ihr Wissen häufig auf diesen Stand. Das ist allerdings kalter Kaffee von vorgestern. Tatsächlich ist emacs lange nachdem grafische Benutzeroberflächen die Regel waren auf diesem Stand stehen geblieben. Weil sich so wenig im offiziellen emacs-Entwicklerzweig getan hat, wurde auch einst xemacs davon abgespalten. xemacs trat mit dem Anspruch an, der besser emacs zu werden, der all die grafischen Versäumnisse von emacs hinter sich lässt. Das "x" im Namen stand dabei nicht allein für X11. Auch die Integration in die Windows-Oberfläche oder (damals) die Finder-Oberfläche des Mac war gedacht. Seit einigen Jahren gibt es allerdings für den eigentlichen emacs wieder ein reges Entwicklerteam. Das Verhältnis hat sich umgekehrt und emacs ist inzwischen xemacs weit voraus.

Seit einigen Jahren beherrscht emacs nicht nur die Maus. Er bietet auch ein komplett Maus bedienbares Menü, das sich der Dateiart anpasst, die gerade bearbeitet wird. Das gleiche gibt für eine Toolbar. Erreicht wird dies über so genannte modes und submodes. Für LaTeX besonders wichtig ist aucTeX, das unter anderem einen stark erweiterten latex-mode bereit stellt. Mit aucTeX hat der emacs-Anwender zum einen Menüs, in denen er alles wichtige für LaTeX findet. Darüber hinaus kann er mit dem Tastenkürzel C-c C-m sehr schnell LaTeX-Anweisungen eingeben. Das geht deshalb so schnell, weil dabei über die Leertaste eine automatische Vervollständigung angeboten wird. Solange die Vervollständigung nicht eindeutig wäre, wird dem Anwender dies mitgeteilt und alternative angezeigt, unter denen er mit der Maus oder durch Eingabe weiterer Zeichen des Makronamens und erneutem Drücken der Leertaste auswählen kann. Steht die Anweisung fest fragt emacs dann auch gleich noch die Parameter für die Anweisung ab. Man muss sich also die konkrete Abfolge der Argumente nicht mehr merken.

Über C-c C-e steht der gleiche Mechanismus auch für Umgebungen zur Verfügung. Dabei werden dann beispielsweise bei der document-Umgebung auch gleich die zu verwendende Klasse oder bei der table-Umgebung ein optionales Label, die Tabellenunterschrift und die Parameter für die tabular-Umgebung abgefragt und alles in die richtige Reihenfolge bringt.

Syntax-Hervorhebung ist selbstverständlich. Das inzwischen in aucTeX integrierte preview-latex bietet darüber hinaus aber sogar die Möglichkeit, bestimmte Elemente des Dokument durch Hintergrund-LaTeX-Läufe in ihre spätere Darstellung umwandeln und direkt in der Dokumenteingabe anzeigen zu lassen. Damit bekommt man dann im Gegensatz zur Darstellung in LyX nicht etwas, was entfernt an das spätere Ergebnis erinnert. Überschrift, Formeln etc. werden so dargestellt, wie sie auch ein DVI-Betrachter anzeigen würde.

emacs mit aucTeX bietet darüber hinaus einige Intelligenz bei der Abfolge von Eingabe, LaTeX-Läufen und Anzeige des Ergebnisses. Drückt man nach einer Änderung beispielsweise C-c C-c, so schlägt aucTeX als sofortige Aktion einen LaTeX-Lauf vor, den man einfach mit Return bestätigen kann. Drückt man nach dem LaTeX-Lauf erneut C-c C-c ermittelt aucTeX über Heuristiken ob jetzt ein neuerlicher LaTeX-Lauf, ein Aufruf von makeindex oder auch ein Aufruf von BibTeX folgen sollte oder bereits die Anzeige erfolgen kann und macht einen entsprechenden Vorschlag. So kann man über mehrere C-c C-c schließlich alle erforderlichen Aufrufe erledigen und dann zur Anzeige gelangen. Ist man einmal der Meinung, dass der Vorschlag von aucTeX nicht passt, kann man aber auch wahlweise eine andere Aktion auswählen. So würde C-c C-c v Return auch dann zur Anzeige führen, wenn aucTeX einen weiteren LaTeX-Lauf vorschlägt.

Übrigens muss man auch die Datei längst nicht mehr über C-x C-f laden und über C-x C-s speichern. Man kann das bequem über das Menü machen, wobei einem dann auch eine grafische Dateiauswahl (unter Windows die von Windows, unter Linux die der Toolbox, mit der emacs erstellt wurde, beispielsweise gtk) zur Verfügung steht.

Als einer von wenigen Editoren beherrscht emacs übrigens auch unter Windows wahlweise utf-8.

Ich konnte hier nur einige Aspekte von emacs vorstellen. Ich will den Editor auch niemandem aufschwatzen. Vieles von dem, was einem Anwender zunächst ungewohnt erscheint, kann man bei emacs einstellen, teilweise direkt über das Menü (beispielsweise, damit C-c für Copy und C-v für Paste steht, wie das Windows-Anwender gewohnt sind). Viele Gerüchte, die über emacs in Umlauf sind, beziehen sich auf längst überholte Versionen davon. Deshab sollte man sich ein Urteil nicht aufgrund dieser Gerüchte bilden, sondern indem man sich selbst mit einer aktuellen Version von emacs beschäftigt. LaTeX-Anwender sollten dabei auf die Integration einer möglichst aktuellen aucTeX-Version achten.

emacs ist auch mit aucTeX kein WYSIWYG-Editor. Die Eingabe erfolgt noch immer, indem man LaTeX-Code erstellt. Man bekommt aber wahlweise dann tatsächlich angezeigt, was dabei herauskommt.

emacs verhält sich noch immer nicht unbedingt so, wie Windows- oder OS-X-Anwender das von anderen Programmen gewohnt sind. Ein Schreckgespenst muss er aber nicht sein. Letztlich passt emacs sehr gut zu LaTeX. Wenn man sich ein wenig von gewohnten Vorstellungen löst, kann er ein sehr, sehr nützliches Werkzeug sein.

Ich selbst benötige übrigens nur ein Dutzend der Tastenkürzel von emacs und aucTeX. Ein normaler Anwender kann emacs ggf. allein mit der Maus bedienen. Da die Menüs auch die Tastenkürzel zeigen, mit denen man das gleiche erreicht wie mit den Menüeinträgen, kann man die Tastenkürzel nach und nach lernen.

Vielleicht hilft diese Darstellung ja, das eine oder andere Gerücht über emacs zu relativieren. Vielleicht traut sich jetzt auch der eine oder andere, emacs anzuschauen, der vorher einfach nur abgeschreckt war. Sicher wird emacs nicht für jeden die Lösung sein. Sicher ist aber auch, dass wenn jemand mal gezwungen sein sollte, emacs zu verwenden, er davor keine Angst haben muss. Er ist nicht schlechter als jeder andere Editor auch. Für Leute wie mich, ist er viel besser, als die meisten anderen Editoren. Für andere ist wiederum ein ganz anderer Editor besser.

Betrachten wir es als Vorteil von LaTeX dass es uns nicht auf einen Editor festlegt!

Benutzeravatar
Johannes
Admin
Admin
Beiträge: 250
Registriert: So 29. Jun 2008, 00:00
Wohnort: Böblingen

Beitrag von Johannes »

Emacs ist nice. Hatte alleredings nur vor ein paar Jahren mal auf einer Sun Workstation damit Kontakt.

Unter Windows habe ich ihn noch nicht benutzt. Auf Linux verwende ich seit geraumer Zeit GVim (tolles teil). Dafür gibts auch LaTeX Unterstützung. Aber ich werde mir emacs doch mal näher anschauen.

Danke für den sehr aufschlussreichen Post.


Gruß
Johannes
goLaTeX Knigge - Eine kleine Liste von wichtigen Regeln, die jeder beachten sollte
goLaTeX-Wiki

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Eins habe ich noch vergessen: Bei Verwendung einer herkömmlichen PC-Tastatur versteht emacs die Alt-Taste normalerweise als M-

Geoemyda

Beitrag von Geoemyda »

Ich bin Windows-Nutzer und vor kurzem auch auf emacs umgestiegen, und finde ihn einfach toll. Preview-Latex macht die Arbeit doch gewaltig übersichtlicher. Gerade bei vielen Formeln. Früher hatte ich mein File minütlich kompiliert und das pdf neben mir offen, jetzt muss ich nur noch den Code betrachten.
Auch die Eingabe von neuen Umgebungen mit C-c C-e ist sehr praktisch, weil man sich das doofe Fingerverrenken mit AltGr + ß begin AltGr + 7, Umgebungsname AltGr + 9 enter enter AltGr + ß end AltGr + 7, Umgebungsname AltGr + 9.... spart.

Allerdings habe ich emacs noch nicht so ganz durchschaut.
Was bedeuten die verschiedenen buffer? Was ist insbesondere _region_?

Früher hatte ich EIN header-file mit allen includes, newcommands und newenvironments und habe das in alle meine Latex-Files mit \input eingebunden. Bei emacs scheint das nicht so recht zu funktionieren, weil er bei verteilter Dateistruktur in jeder einzelnen Datei das Master-File angegeben haben will. Mein Header-File hätte dann aber je nachdem welche Datei ich gerade kompiliere eine andere master-datei. Lässt sich das irgendwie umgehen?

Grüße, Geoemyda

Geoemyda

Beitrag von Geoemyda »

Ach - und noch ne Frage. Da ich mich als Windows Nutzer einfach nicht mit den Linux Befehlen zum Ausscheiden und Einfügen gewöhnen konnte, habe ich C-c, C-v und C-x aktiviert (geht ja mit einem Klick im Menü). Ich habe aber den Eindruck emacs hat nun leichte probleme mit Kommandos wie C-c ; um Bereiche zu kommentieren.

Weitere schwierigkeit: Wie gehe ich mit der Rechtschreibkorrektur um. Soweit ich es verstanden habe brauche ich dazu M-tab, als unter Windows Alt-Tab. Das ist aber leider ein sehr hoch in der Hyrarchie stehender Windows-Tastaturbefehl und heißt "Fenster wechseln". Tut also in emacs garnicths, sondern wechselt aus dem Emacs Fenster heraus. Was tun?

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Geoemyda hat geschrieben:Was bedeuten die verschiedenen buffer?
Ein buffer ist im Prinzip eine Datei im weitesten Sinn. Auch Ausgaben von emacs selbst sind ein buffer (Messages), normalerweise ist auch noch die initiale, unspezifizierte Eingabe ein buffer (scratch), nach einem LaTeX-Lauf hat man die Terminal-Ausgabe von TeX als buffer, usw.
Geoemyda hat geschrieben:Was ist insbesondere _region_?
Eine region ist bei emacs ein ausgewählter Teil aus einem buffer. preview-latex wählt Teile aus, bastelt darauf eine neue TeX-Datei und macht für diese dann einen LaTeX-Lauf. Das ist _region_. Ich weiß jetzt auswenig nicht, ob _region_ read/write ist. Jedenfalls sollte man daran nichts ändern.
Geoemyda hat geschrieben:Früher hatte ich EIN header-file mit allen includes, newcommands und newenvironments und habe das in alle meine Latex-Files mit \input eingebunden. Bei emacs scheint das nicht so recht zu funktionieren, weil er bei verteilter Dateistruktur in jeder einzelnen Datei das Master-File angegeben haben will.
Den Master braucht aucTeX nur, wenn Du aus dieser Datei heraus einen LaTeX-Lauf starten willst. Wenn dieselbe Header-Datei von vielen Dokumenten aus genutzt wird, dürfte sie ja eher statischer Natur sein. In dem Fall braucht sie keinen TeX-Master. Du kannst aber auch einfach
%%% TeX-master: nil
angeben. Dann fragt aucTeX ggf. vor dem TeX-Lauf nach dem Master. Man kann auch in der .emacs direkt
(setq-default TeX-master nil)
eintragen. Dann ist das die Voreinstellung, wenn kein TeX-master in der Datei angegeben ist.

Ich würde Dir übrigens statt einer Header-Datei empfehlen, eine Wrapper-Klasse oder ein Paket zu schreiben (bei der nächsten KOMA-Script-Version werden übrigens auch Optionen - außer version - kein Argument mehr für eine Wrapper-Klasse statt eines Pakets sein). Näheres dazu müsste entweder im cfgguide oder im modguide zu finden sein. Sorry, bin zu faul zum Nachschauen.
Geoemyda hat geschrieben:Soweit ich es verstanden habe brauche ich dazu M-tab, als unter Windows Alt-Tab. Das ist aber leider ein sehr hoch in der Hyrarchie stehender Windows-Tastaturbefehl und heißt "Fenster wechseln". Tut also in emacs garnicths, sondern wechselt aus dem Emacs Fenster heraus. Was tun?
esc verwenden. Statt Meta + Taste kann man auch esc gefolgt von Taste drücken, also statt M-tab einfach esc tab. Wobei mir jetzt nicht ganz klar ist, wo Du in der Rechtschreibkorrektur M-tab verwendest. Liegt vielleicht daran, dass ich die (zu) selten verwende.
Geoemyda hat geschrieben:Da ich mich als Windows Nutzer einfach nicht mit den Linux Befehlen zum Ausscheiden und Einfügen gewöhnen konnte, habe ich C-c, C-v und C-x aktiviert (geht ja mit einem Klick im Menü). Ich habe aber den Eindruck emacs hat nun leichte probleme mit Kommandos wie C-c ; um Bereiche zu kommentieren.
Bei mir nicht. Du musst dann nur daran denken, dass C-c kein kein prefix character mehr ist, sondern ein Befehl. Prefix ist jetzt C-c und weiter ohne Timeout oder einfach C-c C-c. Du musst also (möglichst schnell) zweimal C-c drücken, um an die normalen C-c-Sequenzen heranzukomman. Bereich ein-/auskommentieren ist also jetzt C-c C-c :. Das gilt natürlich entsprechend für C-x. Alternativ kann man den Timeout hochsetzen (frag mich nicht wie, ich benutze CUA nicht). Dann dauern Copy etc. länger aber die Prefix-Sequenzen können wieder ganz normal eingegeben werden.

Wenn man den CUA-Modus verwendet, lohnt es sich u. U. TeX-command-master an eine andere Taste zu binden. In der Emacs-FAQ (Menü Help) ist das recht einfach zu finden.

BTW: Eventuell kann man unter Windows auch eine andere Meta-Taste für emacs definieren. Früher war das jedenfalls mal die linke Alt-Taste. Ich muss zugeben, dass ich emacs unter Windows schon seit min. drei Jahren nicht mehr richtig verwendet habe (mal eben starten, um ein paar Zeilen zu ändern, werte ich nicht als richtig verwenden).

Geoemyda*

Beitrag von Geoemyda* »

Noch den Frage:
Bei manchen Dokumenten bietet mir emacs nach dem Kompilieren und dem Kommando view folgende Zeile an
yap -1 "main.dvi"
bei anderen
dvips "main.dvi" -o && start "" "main.ps"
Woran orientiert sich emacs hierbei, und wie kann ich die Einstellung verändern? Ich hätte gerne immer zweites, bzw noch ein ps2pdf hintendran.

Grüße, Geoemyda

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Geoemyda* hat geschrieben:Woran orientiert sich emacs hierbei, und wie kann ich die Einstellung verändern? Ich hätte gerne immer zweites, bzw noch ein ps2pdf hintendran.
aucTeX orientiert sich daran, was es in der Datei und im Verzeichnis findet. Drück mal, während Du eine tex-Datei geöffnet hast, C-c TAB und blättere in dem neuen Buffer dann zu "Starting Processors, Viewers and Other Programs". Dort findest Du alles zu dem Thema.

ellocco
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 67
Registriert: Fr 30. Apr 2010, 14:09
Wohnort: Ulm
Kontaktdaten:

Beitrag von ellocco »

KOMA hat geschrieben:... Man kann auch in der .emacs direkt
(setq-default TeX-master nil)
eintragen. Dann ist das die Voreinstellung, wenn kein TeX-master in der Datei angegeben ist.
Kurze Anmerkung unter Windoof und xemacs heißt die Datei inzwischen
"init.el" und der Eintrag den Du vorschlägst, bedeutet nach meinem Verständnis:
Default ist, daß es sich bei neuen Dateien gerade nicht um ein Masterfile handelt.
Mich nervt das auch, diese Abfrage nach dem Masterfile und insbes. kommt
mein Xemacs bei dieser Abfrage regelmäßig ins Schleudern.
Ich habe die Einstellung eben in "t" geändert.

Antworten