Mathematische Gleichung nach einer bestimmten Variablen auflösen lassen

Manchmal möchte man eine mathematische Gleichung umstellen, bzw. nach einer der Variablen auflösen. Je nachdem wie kompliziert die Gleichung ist, oder wie lange man so etwas nicht mehr gemacht hat, kann das ganz schon lästig sein. Numerik-Software wie Mathematica können einem die Arbeit deutlich erleichtern. Einige der Mathematica-Funktionen stehen auch online auf www.WolframAlpha.com (Wikipedia) zur Verfügung. In diesem Artikel beschriebe ich, wie man eine einfache Formel nach einer einer Variablen auflösen lassen kann.

  1. Nehmen wir an, wir haben folgende Gleichung:
    a = b + x
  2. Diese Formel wollen wir nach x auflösen. Das Ergebnis ist hoffetlich jedem klar: Auf beiden Seiten -b, ergibt:
    a - b = x

    bzw.

    x = a - b
  3. In Mathematica könnte man diese Aufgabe mit der Funktion Solve lösen (siehe auch: „equation solving„).
    Solve[a==b+x, x]
  4. Gibt man diesen Befehl auf WolframAlpha ein, erhält man das gesuchte Ergebnis:
    Die auf WolframAlpha angezeigte Lösung für das Problem "Löse die Gleichung a = b + x nach x auf"
    Die auf WolframAlpha angezeigte Lösung für das Problem „Löse die Gleichung a = b + x nach x auf“
  5. Da es sich bei WolframAlpha um eine semantische Suchmaschine handelt, kann man auch ähnliche Sachen eingeben, wie z.B.:
    solution of a=b+x for x

Apple Befehlstaste (⌘) in Blog-Artikeln verwenden

Gelegentlich muss ich an einem Apple-Gerät (meist einem iMac) arbeiten. Über meine Erfahrungen berichte ich unter anderem in diesem Blog. Daher komme ich nicht drumherum, die Befehlstaste (; Command key) in den ein oder anderen Beitrag einzufügen.

Dafür gibt es zwei Möglichkeiten:

  • Zum einen kann man das ⌘-Zeichen direkt in den Quelltext (oder das Editor-Fenster) kopieren. Das funktioniert bei mir, da ich in der Regel den UTF-8 Zeichensatz für meine Blogs und Internetseiten verwende.
  • Falls man nicht den UTF8-Zeichensaz verwendet, kann man auch den Unicode-Befehl (⌘) in seinen Quelltext einbauen:
    1
    
    Das ⌘-Zeichen über den HTML-Befehl ⌘ einfügen.

    Das ergibt:

    Das ⌘-Zeichen über den HTML-Befehl ⌘ einfügen.

Hinweis: Einige Browser können das Zeichen nicht darstellen (z.B. der Standard-Browser auf meinem Android-Tablet).

Die Version installierter Pakete im Terminal herausfinden

Kürzlich sollte ich einem Administrator die Version der VMware-Tools mitteilen, die auf meiner virtuellen Maschine installiert waren. Allerdings war (und ist) mir kein Befehl bekannt, mit dem ich diese Informationen direkt von Programmen des Paketes erhalten kann. Es ist aber möglich, die Version des installierten Paketes über den Debian Paketmanager (dpkg) zu ermitteln (UbuntuUsers-Forum).

Dazu lässt man sich zunächst (mit Hilfe von dpkg) eine Liste von Kurzbeschreibungen aller installierten Pakete ausgeben. Mit Hilfe von grep lässt man allerdings nur diejenigen Zeilen anzeigen, in denen der Namen des Paketes vorkommt (in meinem Falle open-vm-tools):

dpkg -l | grep open-vm-tools

In der Ausgabe kann man dann die Version ablesen:

ii  open-vm-tools  2012.05.21-724730-0ubuntu2  i386  tools and components for VMware guest systems (CLI tools)

In meinem Falle konnte der Administrator die virtuelle Maschine problemlos über den vSphere-client neu starten.

Ubuntu-Version im Terminal herausfinden

Wer ganz schnell die Version seiner Linux-Distrbution herausfinden möchte, kann dazu den Befehl lsb_release verwenden (siehe auch Ubuntu-Hilfe und UbuntuUsers-Forum). Durch diesen Befehl erhält man Informationen über allgemeine Linux Schnittstellen (Linux Standard Base; LSB), sowie Distributions-spezifische Informationen.

  • Nach der Eingabe von:
    lsb_release -a

    erhält man z.B.:

    No LSB modules are available.
    Distributor ID:	Ubuntu
    Description:	Ubuntu 12.10
    Release:	12.10
    Codename:	quantal
  • Weitere Informationen über mögliche Parameter erhält man in den Manpages (Online Manpage zu lsb_release):

    man lsb_release
  • Eine andere (weniger umfangreiche Methode) habe ich auf aphilia.info gefunden:
    cat /etc/issue

    Mit dem Resultat:

    Ubuntu 12.10 \n \l
    

Meine TeXstudio-Makros

TeXstudio wurde erstellt, um die Arbeit mit LaTeX zu vereinfachen. Eine Möglichkeit ist die Verwendung sogenannter Makros (oder Macros). Mit der Hilfe von Markos kann man umfangreiche Anweisungen ausführen lassen oder LaTeX-Anweisungen in den Quelltext einfügen. In diesem Artikel liste ich solche Markos auf, die ich derzeit verwende. Weitere Möglichkeiten von Makros werden im Handbuch von TeXstudio beschrieben.

Makros können in TeXstudio unter Makros / Makros bearbeiten verwaltet werden. Ich benutze Makros vor allem um LaTeX-Anweisungen direkt beim Tippen in meinen Quelltext einfügen zu lassen. Dazu dienen Auslöseimpulse (Trigger) und deren Abkürzungen (Abbreviations). Legt man z.B. ein Makro mit dem Trigger BILD an, so wird nach der Eingabe von BILD dieser Text durch den definierten LaTeX-Text ersetzt.

Beispiel für die ein benutzerdefiniertes Makro in TeXstudio. Nach dem speichern des Markos werden die Zeichenketten \bild und BILD beim Tippen automatisch durch den angegebenen LaTeX-Text ersetzt.
Beispiel für die ein benutzerdefiniertes Makro in TeXstudio. Nach dem speichern des Markos werden die Zeichenketten \bild und BILD beim Tippen automatisch durch den angegebenen LaTeX-Text ersetzt.

Makro: Bild einfügen

Nach der Eingabe von \bild oder BILD, werden diese Zeichenketten durch LaTeX-Befehle zum Einbinden eines Bildes ersetzt. Damit die unten stehenden Befehle funktionieren, muss in der Präambel das Paket graphicx eingebunden werden (z.B. \usepackage[pdftex]{graphicx}).

Name: Bild einfügen
Trigger: BILD
Abbreviation: \bild
LaTeX-Text:
\begin{figure}
\includegraphics[width=\textwidth]{Bilder/todo.jpg}
\caption{\textbf{XXX.}
XXX.
}
\label{Fig:XXX}
\end{figure}

Makro: Tabelle einfügen

Nach der Eingabe von \tabelle oder TABELLE, werden diese Zeichenketten durch LaTeX-Befehle für eine Tabelle ersetzt. Damit die unten stehenden Befehle funktionieren, müssen in der Präambel zwei Pakete eingebunden werden:

  • \usepackage{tabularx} – Tabelle, die automatisch an die Breite der Seite angepasst werden kann (über ein X bei der Angabe der Ausrichtung innerhalb der Tabelle).
  • \usepackage{booktabs} – Für die Befehle \toprule, \midrule und \bottomrule.
Name: Tabelle einfügen
Trigger: TABELLE
Abbreviation: \tabelle
LaTeX-Text:
\begin{table}
\caption{TabellenTitel}
\label{Tab:Parameter}
\begin{tabularx}{\textwidth}{ llX }
	\toprule
	Parameter & Typical value & Meaning\\
	\midrule
	$XXX$ & $XXX$ & XXX.\\
	$XXX$ & $XXX$ & XXX.\\
	\bottomrule
\end{tabularx}
\end{table}

Weitere Informationen zu Triggern

Trigger werden als Reguläre Ausdrücke interpretiert. Daher können sie deutlich mehr, als nur eine zu ersetzende Zeichenkette definieren:

Wenn dieser Triggertext in einem tex-Dokument geschrieben wird, so wird durch das aktuelle Makro ersetzt.

Wenn der Trigger mit (?<=etwas) anfängt, so passiert dies nur wenn "etwas" vor den restlichen Teil des Triggers geschriben wurde. Da der Triggertext kein einfacher Suchtext, sondern eine regulärer Suchausdruck ist, kann (?<=\S) verwendet werden, um Ersetzungen nach einem Wort und (?<=\s|^) um Ersetzungen vor einem Wort auszulösen. Man kann den speziellen Wert ?txs-start verwenden, um das Skript bei txs start zu starten.

Eine große Datei in viele kleine Dateien zerlegen

Ich hatte gerade eine sehr große Datei (3.3GB), die ich über eine langsame Internetverbindung auf einen Server verschieben wollte. Der Vorgang würde mehrere Stunden dauern. Die Wahrscheinlichkeit, dass der Upload unterbrochen würde, wäre relativ groß. In dem Falle müßte ich nochmal von vorne beginnen. Daher habe ich die Dateien in einzelne Dateien zerlegt. In diesem Artikel erkläre ich, wie man eine große Datei aufteilt und im Anschluss wieder zusammenfügt.

Ich habe eine Datei ergebnisse.zip, die ich in 10 MB große Stücke zerteilen möchte.

  1. Um den Erfolg überprüfen zu können, ermittle ich zunächst eine Prüfsumme (Hier: MD5-String) der Ausgangsdatei:
    md5sum ergebnisse.zip > ergebnisse.zip.md5
  2. Mit Hilfe des Programms split teile ich die Datei in 10MB große Stücke:
    split -b 10M ergebnisse.zip ergebnisse_split.zip.

    Dadurch werden viele Dateien erzeugt, die folgenden Aufbau haben:

    ergebnisse_split.zip.aa
    ergebnisse_split.zip.ab
    ergebnisse_split.zip.ac
    ergebnisse_split.zip.ad
    ...
    ergebnisse_split.zip.zy
    ergebnisse_split.zip.zz
    
  3. Nun kann man diese Dateien z.B. per SSH auf einem Server laden:
    scp ergebnisse_split.zip.* user@server.domain:~/zielordner

    Sollte nun der Vorgang unterbrochen werden, kann man im Anschluss einfach bei der Datei beginnen, bei der der Upload unterbrochen wurde.

  4. Nach erfolgtem Upload fügt man die Dateien mit Hilfe von cat einfach wieder zusammen:
    cat ergebnisse_split.zip.* > ergebnisse_cat.zip
  5. Nun muss nur noch geprüft werden, ob die zusammengefügte Datei den gleichen Inhalt wie die Ausgangsdatei hat. Dazu berechnet man erstmal die MD5-Summe:
    md5sum ergebnisse_cat.zip > ergebnisse_cat.zip.md5

    Wenn alles geklappt hat, stehen in ergebnisse.zip.md5 und ergebnisse_cat.zip.md5 die gleichen MD5-Summen.

  6. Weitere Möglichkeiten findest Du im Wiki von UbuntuUsers.

Notizen zu einem Vortrag über sichere Kommunikation im Internet

Ich habe mir am 07.11.2013 auf der Kryptoparty der Piratenpartei in Hannover einen Vortrag von Dirk Hillbrecht zum Thema Kryptographie angehört. Dabei ging es vor allem um die Verschlüsselung von E-Mails und Dateien mit Hilfe von OpenPGP. Während der Veranstaltung wurden Fragen beantwortet, die ich mir schon lange gestellt hatte. In diesem Artikel liste ich einige dieser Erkenntnisse auf. Wie man Schritt für Schritt seine E-Mails verschlüsseln kann, schreibe ich in einem separaten Artikel.

Einen Punkt den ich vorran stellen möchte: sicher verschlüsseln und signieren kann man nur mit Software, die auf dem eigenen Rechner läuft. Nur dann kann man einigermaßen sicher sein, dass nur einem selbst gewisse Informationen (Passwörter etc.) bekannt sind. Daher scheiden die Nutzung von Webmail-Oberflächen und die derzeit viel umworbene De-Mail von vornherein aus. Hier muss nämlich die Ver- und Entschlüsselung auf den Servern der Anbieter erfolgen.

Mir war zunächst der Unterschied zwischen „signieren“ und „verschlüsseln“ von E-Mails nicht bewusst. Irgendwie hatte sich in meinem Kopf festgesetzt: „entweder beides, oder nichts“. Tatsächlich kann man aber auch „nur verschlüsseln“ oder „nur signieren“.

E-Mails verschlüsseln

  1. Die Verschlüsselung dient dazu, den Inhalt der E-Mail vor dem Zugriff Dritter zu schützen.
  2. E-Mails werden mit dem öffentlichen Schlüssel des Empfängers verschlüsselt.
  3. Nur der Empfänger kann den Inhalt mit seinem privaten Schlüssel wieder entschlüsseln. (asymmetrische Verschlüsselung)

E-Mails signieren

  1. Eine Signatur verschlüsselt nicht den Inhalt einer Mail. Vielmehr stellt die Signatur sicher, dass der Inhalt der E-Mail vom Absender stammt und nach dem Absenden nicht verändert wurde. Der Empfänger kann den Inhalt der E-Mail auch dann lesen, wenn er die Signatur nicht überprüft hat – eventuell handelt es sich dann aber nicht um die Inhalte, die der Absender tatsächlich abgeschickt hat.
  2. Die Signatur wird mit aus dem privaten Schlüssel des Absenders und dem Inhalt der E-Mail errechnet.
  3. Der Empfänger kann die Richtigkit der Signatur mit Hilfe des öffentlichen Schlüssels des Absenders überprüfen.
  4. Man kann E-Mails zunächst signieren und im Anschluss verschlüsseln.

Einige Begriffe

  • Enigmail ist eine Erweiterung für Thunderbird, mit deren Hilfe E-Mails verschlüsselt und signiert werden können (Enigmail Quickstart Guide). Enigmail führt die Verschlüsselung nicht selbst durch, sondern nutzt dazu GnuPGP. (Erweiterungen für andere Programme, z.B. Mircrosoft Outlook, findest Du in der Liste grafischer Benutzeroberflächen für GnuPG).
  • GnuPG (auch: GPG) ist eine Implementierung vom Verschlüsselungsstandard OpenPGP. GnuPG erstellt die Schlüssel anhand des OpenPGP-Standards, verwaltet die Schlüssel, verschlüsselt, entschlüsselt und signiert die E-Mails. (Anleitungen zu GnuPG)
  • Unter Gnome/Unity kann zu Erstellung und Verwaltung der Schlüssel das Programm Seahorse verwendet werden. Mit Seahorse können (wie zuvor mit dem GNOME Schlüsselbund) auch andere Passwörter (z.B. SFTP) auf dem System verwaltet werden.
  • Da Seahorse und Enigmail nur Frontends für GnuPG sind, sind Schlüssel, die mit Hilfe des einen Programmes erstellt wurden, auch im jeweils anderen Programm sichtbar.
  • Neben dem privaten Schlüssel und dem öffentlichen Schlüssel, gibt es ein Passwort (Passphrase) und einen Fingerprint.
    1. Das Passwort (Passphrase) dient dazu, den privaten Schlüssel vor einem Zugriff Dritter zu schützen. Das Passwort muss man immer dann eingeben, wenn man Zugriff auf seinen privaten Schlüssel haben möchte. Das ist der Fall beim Entschlüsseln von E-Mails, sowie für die Errechnung der Signierung einer E-Mail.
    2. Der Fingerprint dient dazu, einen öffentlichen Schlüssel auf seine Korrektheit zu überprüfen. Erhält man z.B. über einen Key-Server einen öffentlichen Schlüssel, so kann man mit dieser Checksumme testen, ob es sich um den richtigen Schlüssel handelt. Den Fingerprint kann man z.B. auf seine Visitenkarten drucken.
  • Der gpg-agent (UbuntuUsers Wiki) ist integraler Bestandteil von GnuPG. Er dient dazu, dass das Passwort für die privaten Schlüssel nicht jedes mal neu eingegeben werden muss.
  • Ein Widerrufszertifikat dient dazu, einen öffentlichen Schlüssel bereits vor Ablauf seiner Gültigkeit als ungültig zu erklären bzw. von den Schlüsselservern (Keyserver) zu entfernen. Das ist insbesondere dann wichtig, wenn:
    1. Andere Leute Zugriff auf den privaten Schlüssel bekommen haben.
    2. Man selbst keinen Zugriff mehr auf seinen privaten Schlüssel hat.

Einige Fragen

Kann man PGP verschlüsselte Nachrichten an mehrere Nutzer gleichzeitig schicken?
Ja. Dazu möchte ich aus dem Wikipedia-Artikel zu PGP zitieren:

Bei PGP wird aber nicht die ganze Nachricht asymmetrisch verschlüsselt, denn dies wäre viel zu rechenintensiv. Stattdessen wird die eigentliche Nachricht symmetrisch und nur der verwendete Schlüssel asymmetrisch verschlüsselt (Hybride Verschlüsselung). Dazu wird jedes Mal ein symmetrischer Schlüssel zufällig erzeugt.

Dieser symmetrische Schlüssel wird dann per RSA- oder Elgamal-Kryptosystem mit dem öffentlichen Schlüssel des Empfängers verschlüsselt und der Nachricht hinzugefügt. Dadurch ist es möglich, eine Nachricht für mehrere Empfänger gleichzeitig zu verschlüsseln. Eine für mehrere Empfänger verschlüsselte Nachricht ….

… enthält also zusätzlich eine Liste, in der für jeden Empfänger der Schlüssel enthalten ist. Dieser Schlüssel wird für jeden Empfänger mit seinem öffentlichen Schlüssel asymmetrisch verschlüsselt.

Kann ich meine gesendeten verschlüsselten Nachrichten im Postausgang noch lesen?
Wenn eine Nachricht mit dem öffentlichen Schlüssel der Empfängers verschlüsselt worden ist, kannst man sie im Prinzip nach dem senden nicht mehr anschauen. Allerdings kann man sich selbst auch als Empfänger der Nachricht eintragen lassen (siehe oben). Bei Enigmail gibt es dazu die Einstellung: „Zusätzlich mit eigenem Schlüssel verschlüsseln“:

Man kann E-Mails nicht nur mit dem öffentlichen Schlüssel des Empfängers, sondern auch mit dem eigenen Schlüssel verschlüsseln. Dadurch kann man die gesendeten und verschlüsselten Nachrichten im Postausgang wie gewohnt lesen.
Man kann E-Mails nicht nur mit dem öffentlichen Schlüssel des Empfängers, sondern auch mit dem eigenen Schlüssel verschlüsseln. Dadurch kann man die gesendeten und verschlüsselten Nachrichten im Postausgang wie gewohnt lesen.
Wie kann ich herausfinden, ob mein Schlüssel bereits auf einen Schlüsselserver hochgeladen wurde?
Dazu kannst Du einfach den Schlüsselserver nach deiner E-Mail-Adresse durchsuchen.

  1. Bei Enigmail geht das über: OpenPGP / Schlüssel verwalten und dann Schlüsselserver / Schlüssel suchen.
  2. Bei Seahorse kannst Du den/die Schlüsselserver durchsuchen, indem du auf Entfernt / Entfernte Schlüssel suchen klickst.
  3. Direkt im Internet kannst Du z.B. den MIT Schlüsselserver durchsuchen.
  4. Eine Liste grafischer Benutzeroberflächen für GnuPG findest Du auf der GnuPG Homepage.

Sichere Internet-Verbindung mit HTTPS und SSH

  • Bei HTTPS wird zunächst sichergestellt, dass die Gegenseite auch tatsächlich diejenige ist, für die sie sich ausgibt (also z.B. die Bank, und kein „Man in the middle„). Das wird mit Hilfe von Zertifikaten und einer Zertifikatskette sichergestellt, die von Zertifizierungsstellen (CA; certification authority) bereitgestellt werden. So lange die privaten Schlüssel der Zertifizierungsstellen nicht in falsche Hände gelangt sind, ist das eine sichere Angelegenheit
  • Im Anschluss werden die Schlüssel für die Verschlüsselung mit Hilfe des Diffie-Hellman-Schlüsselaustausches ausgetauscht. Die Besonderheit dieses Verfahrens ist, dass die eigentlichen Schlüssel nicht über das Internet versendet werden. Im Anschluss werden alle Daten nur noch verschlüsselt versendet.
  • Auch wenn man ein unsicheres Netzwerk verwendet (z.B. am Flughafen oder in einem Café), sind diese HTTPS-Verbindungen sicher.
  • Bei SSH-Verbindungen (z.B. wenn man sich im Terminal auf einen Server einloggt, oder eine SFTP-Verbindung aufbaut), muss man zunächst die Schlüssel über eine sichere Verbindung ausgetauscht haben. Den Fingerprint für die Authentifizierung kann man sich vom Admin geben lassen. Bei jedem Aufbau einer SSH-Verbindung wird anhand des Fingerprints überpüft, ob die gewünschte Gegenstelle (direkt) erreicht wurde. Im Anschluss können alle Daten verschlüsselt ausgetauscht werden.

Daten verschlüsseln mit TrueCrypt

In den letzten Minuten des Vortrags wurde noch das Programm TrueCrypt als gute Möglichkeit zur Verschlüsselung von Dateien vorgestellt.

  • TrueCrypt ist für viele Plattformen verfügbar. Das Programm heißt unter Linux RealCrypt.
  • Man legt sogenannte Volumes an, deren Größe man vorher festlegen muss.
  • Mit Hilfe von TrueCrypt können verschlüsselte Archiv-Dateien erstellt (und im Anschluss verbreitet) werden. Bei eCryptFS soll das scheinbar nicht so gut möglich sein. Damit habe ich mich allerdings noch nicht beschäftigt.
  • Die Dateien können mit einem einfachen Passwort wieder entschlüsselt werden.
  • Scheinbar hat Julian Paul Assange diese Methode verwendet, um die amerikanischen Botschaftsdepeschen zu verschlüsseln und zu vebreiten. Er hat gedroht, dass im Falle seines vorzeitigen Ablebens das Passwort an die Öffentlichkeit geraten würde. In dem Falle würden die verschlüsselten Dateien (die auf vielen Server in der ganzen Welt abgelegt worden waren) für alle einsehbar werden. In seiner Biographie hat Assange allerdings Hinweise auf das Passwort gegeben. Das wurde dann erraten und dadurch wurden alle Botschaftsdepeschen einsehbar – auch solche die nicht veröffentlicht werden sollten.

Drucker installieren, der an den USB-Port einer FRITZ!Box angeschlossen ist

Meinen Drucker (Brother HL-5270DN) habe ich direkt an den USB-Anschluss meines WLAN-Routers (AVM FRITZ!Box Fon WLAN 7270) angeschlossen. Zum einen musste ich dadurch keine Kabel verlegen, zum anderen kann ich den Drucker von jedem Rechner im Netzwerk aus verwenden. Wie man den Drucker unter Ubuntu Linux 13.10 installiert, zeige ich in der folgenden Anleitung.

  1. Zunächst wählt man in den Systemeinstellungen den Bereich „Drucker“ aus.
    Der Bereich "Drucker" in den Systemeinstellungen von Ubuntu.
    Der Bereich „Drucker“ in den Systemeinstellungen von Ubuntu.
  2. Nachdem man auf „Hinzufügen“ geklickt hat, kann man den Drucker im Netzwerk suchen. Als Host gibt man dabei fritz.box (oder alternativ die IP-Adresse 192.168.178.1) ein. Falls man eine zweite FRITZ!Box betreiben sollte, können Hostname und IP-Adresse anders sein.
    Suche des Druckers im Netzwerk.
    Suche des Druckers im Netzwerk.
  3. Im Anschluss sollte der Drucker gefunden werden (hier als „JetDirect (fritz.box)“).
    Drucker wurde im Netzwerk gefunden, und wird als "JetDirect (fritz.box)" angezeigt.
    Drucker wurde im Netzwerk gefunden, und wird als „JetDirect (fritz.box)“ angezeigt.

    Wird der Drucker nicht gefunden, sollte man zunächst in den Verbindungsinformationen der eigenen FRITZ!Box nachsehen, ob der Drucker korrekt angeschlossen ist.

    In den Verbindungsinformationen auf der Startseite der FRITZ!Box sollte der Drucker als USB-Gerät aufgeführt sein.
    In den Verbindungsinformationen auf der Startseite der FRITZ!Box sollte der Drucker als USB-Gerät aufgeführt sein.

    Anstatt den Drucker zu suchen, kann man auch direkt die Adresse des Druckers (socket://fritz.box:9100) eingeben.

    Die direkte Eingabe der Drucker-Adresse kann die Suche im Netzwerk ersetzen.
    Die direkte Eingabe der Drucker-Adresse kann die Suche im Netzwerk ersetzen.
  4. Nun muss man nur noch die richtiger Drucker-Treiber auswählen.
    Auswahl der Drucker-Treiber.
    Auswahl der Drucker-Treiber.
  5. Im Anschluss steht einem der Drucker zur Verfügung.
    Einstellungen des neu installierten Druckers.
    Einstellungen des neu installierten Druckers.
  6. Nun muss nur noch überprüft werden, ob alle Einstellungen korrekt sind. In meinem Falle musste ich noch den doppelseitigen Druck (DoplexNoTumble: drehen an der langen Seite) sowie den Toner-Sparmodus aktivieren.
    Druckeroptionen für den Drucker "Brother HL-5270DN".
    Druckeroptionen für den Drucker „Brother HL-5270DN“.

Vervollständigung für eigene LaTeX-Befehle in TeXstudio realisieren

Für einige Aufgaben kann man sich in LaTeX eigene Befehle definieren. So habe ich mir z.B. Befehle für die Referenzierung von Bildern, Tabellen, etc. innerhalb meines Dokumentes definiert. Im Gegensatz zum TeX-eigenen Befehl \ref, wird einem in TeXstudio für den eigenen Befehl standardmäßig keine Liste der vorhandenen Labels angezeigt. In diesem Artikel beschreibe ich, wie man diese erweiterte Code-Vervollständigung für eigene Befehle in TeXstudio aktivieren kann.

Beim tippen des LaTeX-Befehls \ref stellt TeXstudio standardmäßig eine Liste  der vorhandenen labels zur Verfügung (hier: Fig:test). In wenigen Schritten kann man diese Liste auch beim tippen von eigenen Befehlen anzeigen lassen.
Beim tippen des LaTeX-Befehls \ref stellt TeXstudio standardmäßig eine Liste der vorhandenen labels zur Verfügung (hier: Fig:test). In wenigen Schritten kann man diese Liste auch beim tippen von eigenen Befehlen anzeigen lassen.
  1. Ich nutze z.B. für Referenzen auf Bilder einen eigenen Befehl (\fig). Dieser Befehl schreibt mir bei der Referenzierung nicht nur die Nummer, sondern auch gleich ein „Fig. “ vor diese Nummer (siehe auch LaTeX: Labels and Cross-referencing). Dazu verwende ich in der Präambel folgende Zeilen:

    \newcommand{\tab}[1]{{\sc Table~\ref{#1}}}
    \newcommand{\eq}[1]{{\sc Equation~\ref{#1}}}
    \newcommand{\fig}[1]{{\sc Figure~\ref{#1}}}	% z.B. für Fig. 2
    \newcommand{\figE}[2]{{\sc Figure~\ref{#1}#2}}	% z.B. für Fig. 2A
     
    \newcommand{\chap}[1]{{\sc Chapter~\ref{#1}}}
    \newcommand{\sect}[1]{{\sc Section~\ref{#1}}}
    \newcommand{\subsect}[1]{{\sc Subsection~\ref{#1}}}
    \newcommand{\lst}[1]{{\sc Listing~\ref{#1}}}
    \newcommand{\itm}[1]{{\sc Item~\ref{#1}}}
  2. Um nun beim tippen des Befehls \fig oder \tab ebenfalls eine Liste der labels angezeigt zu bekommen, kann man Befehle in sogenannten CWL-Dateien anlegen. Eine sehr gute Beschreibung des CWL-Formates findet man in der TeXstudio-Dokumentation (lokal).

    Ich habe mir eine Datei sven.cwl mit folgendem Inhalt angelegt:

    # Kommentarzeile
    \tab{key}#r
    \eq{key}#r
    \fig{key}#r
    \figE{key}{teil}#r
    
    \tab{key}#r
    \chap{key}#r
    \sect{key}#r
    \subsect{key}#r
    \lst{key}#r
    \itm{key}#r
    
  3. Im Anschluss habe ich die Datei in mein lokales Konfigurationsverzeichnis für TeXstudio kopiert. Unter Ubuntu Linux ist das standardmäßig: /home/username/.config/textstudio (bzw. ~/.config/textstudio)
  4. Die CWL-Datei habe ich dann in den Einstellungen von TeXstudio aktiviert:
    Die eigenen CWL-Dateien müssen noch in den Einstellungen von TeXstudio aktiviert werden.
    Die eigenen CWL-Dateien müssen noch in den Einstellungen von TeXstudio aktiviert werden.
  5. Im Anschluss wird auch für eigene Befehle (hier: \fig, \figE, \eq und \tab) eine Liste von verfügbaren labels angezeigt.

    Mit Hilfe von CWL-Dateien kann auch für eigene Befehle z.B. eine Liste bekannter labels in der Autovervollständigung angezeigt werden.
    Mit Hilfe von CWL-Dateien kann auch für eigene Befehle z.B. eine Liste bekannter labels in der Autovervollständigung angezeigt werden.

JavaScript-Datei im Theme-Editor sichtbar machen

Wer JavaScript-Dateien in seinem WordPress-Blog verwenden möchte, der möchte diese Dateien eventuell auch über den eingebauten Theme-Editor bearbeiten. Das Problem ist allerdings, dass der Theme-Editor solche Dateien nicht auflistet die in Unterverzeichnissen liegen oder deren Dateinamen nicht auf .css oder .php enden. In diesem Artikel zeige ich eine Möglichkeit, dieses Problem in drei Schritten zu umgehen.

  1. Verschiebe die Datei aus dem Unterverzeichnis direkt in das Wurzelverzeichnis deines Themes oder Child-Themes.
  2. Ändere die Endung der Datei auf .php.
  3. Schreibe zu Beginn der Datei folgenden PHP-Befehl:
    <?php
    header("Content-type: text/javascript; charset=UTF-8");
    ?>

    Mit diesem Befehl sendet PHP an den Browser, dass es sich um eine JavaScript-Datei handelt. Wenn vom Server keine (oder falsche) Informationen über den Inhalt der Datei gesendet würden, dann würde insbesondere Firefox diese Datei ignorieren. Solltest Du beim Erstellen der JavaScript-Datei einen anderen Zeichensatz als UTF-8 verwendet haben, musst Du die Angabe das charset entsprechend ändern.