TEX/LATEX
Das wissenschaftliche Satzprogramm
Inhaltsverzeichnis zu JMB's Seite über
TEX/LATEX
Bedeutung von TEX,
LATEX und
dem Begriff Satzprogramm
TEX:
Textsatzsystem, das gemeinsam mit METAFONT von Donald E. Knuth
(Stanford Homepage)
ab 1977 entwickelt und 1986 fertiggestellt wurde.
Es ermöglicht, anders als die diversen Office-Systeme,
einen druckreifen Textsatz.
Seit 1990 ist es eingefroren und wird
von Weiterentwicklungen wie pdfTEX oder
LuaTEX emuliert.
LATEX:
Ein Softwarepaket, das von Leslie Lamport
Anfang der 1980er Jahre entwickelt wurde und
die Benutzung des Textsatzsystems TEX
mit Hilfe von Makros vereinfacht – aktuell
in Fassung 2ε.
Analog wurde BIBTEX
1985 von Oren Patashnik und Leslie Lamport entwickelt.
TEX Live
(ehemalige Veröffentlichungen):
die umfangreichste verfügbare TEX-Distribution,
die vielen 🐧GNU/Linux-Distributionen
(insbesondere den Desktop-Distributionen Debian, Ubuntu
und Mint) in aktueller Fassung beiliegen –
d.h. ohne großen Aufwand durch Installation des Pakets
texlive-full aus den Repositories komplett
installiert werden kann. Hier die aktuell bedeutendsten Versionen
(natürlich sollte man immer eine möglichst aktuelle
verwenden und auch online bzw. bei Büchern
auf die verwendete Version achten):
2013: LuaTEX mit Updated
auf Lua 5.2 – enthalten in Ubuntu 13.10 +
14.04 LTS Trusty –
vom 21. Juni 2013;
2014: mit TEX- und MetaFont-Updates –
enthalten in Debian Squeeze stable –
vom 18. Juni 2014;
2015: mit Verschmelzung vieler LATEX-Fixe
von externen Paketen in LATEX selbst,
JPEG Exif-Support in pdfTEX sowie Bild-Handling-Fixe
in XETEX –
enthalten in Debian experimental sowie Ubuntu 15.04 +
16.04 LTS Xenial –
vom 11. Juni 2015;
2016: mit LuaTEX 0.95 –
enthalten in Ubuntu 16.10 –
vom 05. Juni 2016;
2017: mit LuaTEX 1.0.4, das das Einbinden von
Lua-Programmen in TEX-Dokumenten erlaubt –
enthalten in Ubuntu 17.10 +
18.04 LTS Bionic –
vom 04. Juni 2017 + 26. April 2018;
2019: mit Lua 5.3 in 2019
in Ubuntu 18.10+19.04 [beide
als dev/Debian] +19.10+20.04 [beide
nun final,
d.h. TeX Live 2019/Debian] –
vom 29. April 2019;
2020: in 2020
in Ubuntu 20.10 [final,
d.h. TeX Live 2020/Debian] –
vom 10. April 2020;
2021: mit Lua 5.3.6 in 2021
in Ubuntu ??? –
vom 01. April 2021;
2022: geplant am 01. April 2022,
d.h. in 22.04 LTS
"TeX Live 2022/dev/Debian", final wohl erst
in Kubuntu 22.10 STS enthalten;
2023:
geplant am 19. März 2023, d.h. ggf in 23.04 STS bzw. spätestens in Kubuntu 23.10 STS
enthalten;
2024:
released am 14. März 2024, d.h. in 24.04 LTS
"TeX Live 2024/dev/Debian", final wohl erst
in Kubuntu 24.10 STS enthalten;
2025:
geplant 08. März 2025, d.h. ggf in 25.04 STS bzw. spätestens in Kubuntu 25.10 STS
enthalten.
CATAN:
Das Comprehensive TEX Archive Network
ist ein extrem umfangreiches weltweites Archiv von Software
und Dokumentation rund um das Textsatzsystem TEX,
aufrufbar über https://ctan.org/.
CTAN entstand 1992 und wurde von Rainer Schöpf
und Joachim Schrod in Deutschland, von Sebastian Rahtz
in Großbritannien und von George Greenwade
(von ihm stammt der Name CTAN)
in den USA aufgebaut.
DANTE e. V.:
Deutschsprachige Anwendervereinigung TeX
(eingetragener Verein) wurde am14. April 1989
in Heidelberg gegründet und unter der Nummer 1659
ins Vereinsregister Heidelberg eingetragen.
Siehe deren Website:
https://www.dante.de/.
Ein erster Start ...
Analog zu den Hello World!-Programmen hier ein
einfach gehaltenes, aber nicht zu triviales
LATEX-Dokument,
wenn man mit TEX /
LATEX noch nie gearbeitet hat:
% ************************************************************************
% * Author: JMB, ............... Volle Adresse ...................... *
% ************************************************************************
% ************************ Hello_World_JMB.tex *************************
% ************************************************************************
% *** Erste Fassung: 24.08.2017 ***** Letzte Aenderung: 26.08.2017 ***
% ************************************************************************
%
% * Linux-Kommandozeilenbefehle zum Erstellen eines PDFs:
% latex -interaction=nonstopmode Hello_World_JMB % (1) TEX -> DVI
% dvips Hello_World_JMB.dvi -o Hello_World_JMB.ps % (2) DVI -> PS
% ps2pdfwr Hello_World_JMB.ps Hello_World_JMB.pdf % (3) PS -> PDF
%
\documentclass[12pt,twoside,a4paper]{article}
%
% * Nutzen von Eigenheiten der Deutschen Sprache:
\usepackage{german}
%
% * Definition des europaeischen Waehrungssymbols:
\usepackage[official,right]{eurosym}
%
% * Festlegen der Seitenparameter:
\textHEIGHT25.5cm % Texthoehe - Din A4 maximal: 29.7cm (27.5cm ohne SZ)
\textwidth17.9cm % Textbreite - Din A4 maximal: 20.9cm
\topmargin-1.1cm % Obiger Rand
\oddsidemargin-1.00cm % Linker Rand bei ungeradzahligen Seiten
\evensidemargin-1.00cm % Linker Rand bei Geradzahligen Seiten
%
% * Allgemeine Workarounds zu LaTeX2e bzgl. Zeichensatz-Problemen:
\tolerance800
\emergencystretch2em
\doublehyphendemerits5000
\hfuzz0pt
\leftskip0pt minus 1pt
\rightskip0pt minus 1pt
%
% * Einige nuetzliche Definitionen von JMB:
\newcommand{\normfont}{\rmfamily \upshape}
\newcommand{\allnormfont}{\rmfamily \mdseries \upshape}
\newcommand{\fntsep}{\vspace*{-0.08cm}}
%
\begin{document}
%
% ***********************************************************************
% ***************************** Seite 01 *****************************
% ***********************************************************************
\thispagestyle{plain} % Seitenzahl erscheint auf aktueller Seite
%\thispagestyle{empty} % Seitenzahl erscheint nicht auf aktueller Seite
\setcounter{page}{1} % Setzen der aktuellen Seitenzahl
%\vspace*{-2.55cm}
\noindent % * Unterdruecken des Einrueckens trotz fuehrender freier Zeile.
\centerline{\Large \scshape Hello World$\,$!}\\[1.2cm]
$E=m \cdot c^2$~-- {\TeX} ist Spezialist f\"ur Formeln ... und
kann noch viel mehr ... z.B. Schaltskizzen, Grafiken, 3-D-Spielereien,
Plots, Norm-Briefe, B\"ucher inkl. Einbindung von Bildern, automatischer
Nummerierung {\small (Abb., Tab., Gleichungen, Seiten und Variabler
mit Berechnungen {\footnotesize \{z.B. f\"ur Seitenverweise bzw. Anzahl
aller Tabellen etc.\}})} ...
hier nur ein paar wenige Einstiegsbeispiele.
Hierzu gibt es viele B\"ucher, Wikis und eine F\"ulle von online
zug\"anglicher Dokumentation, die alle Aspekte abdecken, inkl.
FAQ-Sammlungen. Hier noch eine simple Tabelle:
\noindent % * Unterdruecken des Einrueckens trotz fuehrender freier Zeile.
\begin{tabular}{l|l} % * Tabellenstart mit zwei linksbuendigen Spalten.
Ware & Preis\\
\hline
Artikel 1 & \EUR{0,00}\\
2. Artikel & \EUR{9,99}\\
\hline
\multicolumn{2}{l}{\footnotesize
Alle Preisangaben inkl. 19\% MwSt., \fntsep}\\
\multicolumn{2}{l}{\footnotesize
ebenso inkl. Porto und Verpackung.}
\end{tabular} % * Tabellenende
\\[0.25cm] % * Neue Zeile mit zusaetzlichem Abstand
{\bfseries Have fun!}
%
\end{document}
Alles, was nach "\end{document}" kommt, wird ignoriert ... ist also so wie
ein Kommentar, nur dass man die %-Zeichen nicht mehr benoetigt.
% ************************************************************************
% ************************************************************************
% ************************************************************************
[ Öffnen des Printerzeugnisses Hello_World_JMB.pdf in neuem Browser-Tab]
[ Öffnen der Quelltextdatei Hello_World_JMB.tex in neuem Browser-Tab]
Zur Erklärung:
- Eine *.tex-Datei heißt
(LA-) TEX-Quelle,
die (Zwischen-) Ausgaben in Form einer
*.dvi-Datei
(DVI:
device independent; für dieses Standard-Ausgabeformat
von TEX gibt es Betrachtungsprogramme
{Viewer; z.B. xdvi}, heute aber eher
nur als Zwischenstufe ohne direkte Verwendung
in Gebrauch),
*.ps-Datei
(PS:
PostScript; Seitenbeschreibungssprache
für professionelle Drucker und Belichter
ohne verlustbehaftete Kompression;
für PSTricks ist dieses Format zwingend
in der Kette nötig
{PS wurde wie die graphische
Benutzeroberfläche [GUI], die Maus oder
der LASER-Drucker in Xeorx PARC entwickelt}),
*.pdf-Datei (PDF:
Portable Document Format;
von Adobe auf PS-Grundlage entwickelt, auf Grund
der Kompression ein praktisches, semi-professionelles
Austauschformat mit riesiger Verbreitung)
bezeichne ich im Folgenden als Druckerzeugnis,
auch wenn es am Bildschirm betrachtet oder projiziert
werden soll.
Unter einem 🐧Debian-Derivat
mit installiertem TEX Live-System
kann man alles mit einem Kommando
übersetzen lassen (d.h. alle
Druckerzeugnis‑Dateien werden generiert):
latex -interaction=nonstopmode
Hello_World_JMB;
dvips Hello_World_JMB.dvi -o Hello_World_JMB.ps;
ps2pdfwr Hello_World_JMB.ps Hello_World_JMB.pdf.
- Alles nach einem Prozentzeichen ohne führenden Backspace
(d.h. %; nicht aber
\%, was im Druck wirklich
als Prozentzeichen erscheint: dies gilt z.B. auch für
\$, \{ und
\})
bis zum Zeilenende kann gelöscht werden, ohne dass sich
das Druckerzeugnis ändern würde.
Das Prozentzeichen ist somit für Kommentare
reserviert.
- Der Backslash (\) kennzeichnet
Befehle, die man über \newcommand{}{}
auch selbst definieren kann (bzw. mit \renewcommand{}{} umdefiniert werden).
Befehle gelten innerhalb der aktuellen Umgebung, die man durch
geschweifte Klammern { }
einschränken kann.
Komplexere Befehle werden mit \begin{} und \end{}
eingefasst, wie z.B. bei Tabellen (tabular) oder Unterseiten (minipage) der Fall.
Speziell ist noch der Mathematikmodus, der mit
dem Dollarzeichen $ beginnt und auch
wieder endet.
- Nach Punkt 2 beginnt unser Dokument also mit documentclass, das mit den Parametern
eine Schrift in Briefgröße von 12pt, doppelseitigen Einsatz und
das Papierformat
A4‑hochkant
(d.h. portrait –
im Gegensatz zum Querformat mit landscape) vorgibt.
Das Papierformat A4 sollte auf diese Weise
vorgegeben werden, da die LATEX-Übersetzer die Defaults
im TEX Live-System
ggf. ignorieren und ansonsten das Papierformat Letter vorgeben.
Neben article, das ich auch
für große Bücher
verwende, ist z.B. powerdot
für Präsentationen sinnvoll, dann natürlich
mit anderen Optionen (z.B. muss
das Layout mit style=...
vorgegeben werden).
- Der Befehl \usepackage{} bindet
weitere Pakete mit Konstanten- und Befehlsdefinitionen
ein – hier mit germany
eine Sprachvorgabe (z.B. bzgl. der Trennungs-Regeln
oder Umlaute) oder mit eurosym
das EUR-Symbol (\EUR{9,99}:
99 €).
Es gibt sehr viele Pakete, u.a. zum Einbinden
von PS-Bildern (graphics oder seine Erweiterung graphicx), bzgl. variantenreichem
Unterstreichen (ulem),
für weitere Symbole (marvosym),
zur Verwendung von Farbe (color), für eine
genauere Wahl des Papierformats (geometry),
PostScript‑Spielereien (pstricks)
und vieles mehr ...
- Setzen von Konstanten auf speziell gewünschte Werte
(hier für Seiten-Format und Font-Handling),
so dass ein jeweiliges Anpassen schnell vonstatten
gehen kann.
- Mit \begin{document} startet
die eigentliche Ausgabe, d.h. die Gestaltung
der ersten Seite.
Zunächst eine Textpassage, dann eine Tabelle und
zum Abschluss eine Zeile in Fettdruck
(\bfseries –
der Default wäre \mdseries;
daneben gibt es kursiv über \itshape (neben \slshape und \scshape)
und mit aufrechten Ligaturen der Default \upshape; und ebenso Schreibmaschinenschrift
\ttfamily und der Default \rmfamily).
Mit \end{document} endet
die Ausgabe, d.h. alles nach diesem Befehl wird
als Kommentar interpretiert und ändert den Druck
nicht.
- Manche Fehler sind nicht leicht zu finden –
hier hilft ein Auskommentieren problematischer Zeilen,
bis kein Fehler mehr gemeldet wird,
und sukzessives Dekommentieren, bis der Fehler
wieder da ist. Entsprechend kann mit \end{document} das danach Kommende
ausgeblendet werden.
Auf diese Weise lassen sich auch hartnäckige Fehler
identifizieren.
Beispiele der Fähigkeiten von TEX /
LATEX sind auf meiner
📋PDF-Downloads-Seite
zu finden.
... und Möglichkeiten
der Erweiterung
Einsatz von Mathematischen Formeln
Soll in einer Textzeile (z.B. direkt
nach der 42. Zeile im obigen Hello_World_JMB.tex) eine kleine Formel
oder mathematische Angabe stehen, so ist diese
in Dollarzeichen einzubinden (das Dollarzeichen ist
mit {\$} im Text zu erzeugen).
Ein sehr einfaches Beispiel wäre:
Die Fl\"ache eines Quadrats mit Seitenl\"ange $a$
ist $A = a^2$.
Als weitere Quellen sei für den Anfang auf:
Mathematischer Satz
mit LATEX,
Mathematik mit LATEX
verwiesen.
Nutzung der Zeichensätze
ZapfDingbats und MarVoSym sowie Einsatz
weiterer Zeichensatz-Pakete
Der folgende Codeschnipsel zur Einbindung
des ZapfDingbats-Fonts könnte z.B. in Hello_World_JMB.tex nach der 21. Zeile
eingearbeitet und dann im Hauptteil über z.B. {\datachar} im Text als Zeichen ✇ verwendet werden
(vgl. ZapfDingbats-Block
meines 🌐WWW-Manuals,
da ZapfDingbats im Unicode enthalten und somit in HTML
aufrufbar ist – hier mit ✇):
%% ************************************************************************
%%... hier steht sonst der Start mit documentclass, Kommentaren etc. ...
\usepackage{pifont}
% ... Einbinden des Pakets zur Nutzung des ZapfDingbats-Symbol-Fonts
%% ... hier weitere "usepackage"-Aufrufe ...
%%
% * Definitionen für Sonderzeichen aus einem PS-Font (über pifont):
\newcommand{\uscissorchar}{\ding{33}}
\newcommand{\scissorchar}{\ding{34}}
\newcommand{\lscissorchar}{\mbox{$_{_{\mbox{\ding{35}}}}$}}
%\newcommand{\lscissorchar}{\ding{35}}
\newcommand{\dscissorchar}{\ding{36}}
\newcommand{\phonechar}{\ding{37}}
\newcommand{\circphonechar}{\ding{38}}
\newcommand{\datachar}{\ding{39}}
\newcommand{\planechar}{\ding{40}}
\newcommand{\envelopechar}{\ding{41}}
\newcommand{\bphandchar}{\ding{42}}
\newcommand{\phandchar}{\ding{43}}
\newcommand{\victchar}{\ding{44}}
\newcommand{\whandchar}{\ding{45}}
\newcommand{\rdpencilchar}{\ding{46}}
\newcommand{\rpencilchar}{\ding{47}}
\newcommand{\rupencilchar}{\ding{48}}
\newcommand{\symhookchar}{\ding{51}}
\newcommand{\symhookbchar}{\ding{52}}
\newcommand{\symcrosschar}{\ding{53}}
\newcommand{\symcrosstchar}{\ding{54}}
\newcommand{\symcrossmchar}{\ding{55}}
\newcommand{\symcrossbchar}{\ding{56}}
\newcommand{\symcrossbl}{\ding{61}}
\newcommand{\symwhitecrosschar}{\ding{62}}
\newcommand{\starfchar}{\ding{73}} % filigran
\newcommand{\starchardpent}{\ding{78}}
\newcommand{\starcharpent}{\ding{79}}
\newcommand{\starshadow}{\ding{80}}
\newcommand{\starchar}{\ding{85}}
\newcommand{\circstarchar}{\ding{89}}
\newcommand{\raystarchar}{\ding{90}}
\newcommand{\fcteardropast}{\ding{91}}
\newcommand{\octeardropast}{\ding{92}}
\newcommand{\frostchar}{\ding{93}}
\newcommand{\mcdotchar}{\raisebox{0pt}[0pt][0pt]{\raisebox{0.30ex}{\mbox{$\;$\tiny \ding{93}$\;\,\,$}}}}
\newcommand{\darkflowerchar}{\ding{95}}
\newcommand{\flowerchar}{\ding{96}}
\newcommand{\snowflakedchar}{\ding{99}}
\newcommand{\fullcircchar}{\ding{108}}
\newcommand{\opencircchar}{\ding{109}}
\newcommand{\whiteboxchar}{\hspace*{-0.68cm}\bfseries\Box}
\newcommand{\blackboxchar}{\ding{110}}
\newcommand{\downshadowboxchar}{\ding{111}}
\newcommand{\upshadowboxchar}{\ding{112}}
\newcommand{\downtshadowboxchar}{\ding{113}}
\newcommand{\uptshadowboxchar}{\ding{114}}
\newcommand{\frsquarechar}{\ding{117}}
\newcommand{\heartexcl}{\ding{163}}
\newcommand{\psheart}{\ding{164}}
\newcommand{\circone}{\ding{172}}
\newcommand{\circtwo}{\ding{173}}
\newcommand{\circthree}{\ding{174}}
\newcommand{\circfour}{\ding{175}}
\newcommand{\circfive}{\ding{176}}
\newcommand{\circsix}{\ding{177}}
\newcommand{\circseven}{\ding{178}}
\newcommand{\circeight}{\ding{179}}
\newcommand{\circnine}{\ding{180}}
\newcommand{\circzero}{\ding{181}}
\newcommand{\circoneinv}{\ding{182}}
\newcommand{\circtwoinv}{\ding{183}}
\newcommand{\circthreeinv}{\ding{184}}
\newcommand{\circfourinv}{\ding{185}}
\newcommand{\circfiveinv}{\ding{186}}
\newcommand{\circsixinv}{\ding{187}}
\newcommand{\circseveninv}{\ding{188}}
\newcommand{\circeightinv}{\ding{189}}
\newcommand{\circnineinv}{\ding{190}}
\newcommand{\circzeroinv}{\ding{191}}
\newcommand{\arrowdrf}{\ding{216}}
\newcommand{\rightpsarrow}{\ding{217}}
\newcommand{\uppsarrow}{\ding{218}}
\newcommand{\bigrightroundarrow}{\ding{220}}
\newcommand{\downrightleadstochar}{\ding{221}}
\newcommand{\leadstochar}{\ding{223}}
\newcommand{\arrowcnb}{\ding{226}}
\newcommand{\arrowcna}{\ding{227}}
\newcommand{\psarrowfromup}{\ding{229}}
\newcommand{\psarrowfromdown}{\ding{230}}
\newcommand{\arrowdru}{\ding{233}}
\newcommand{\arrowdld}{\ding{234}}
\newcommand{\arrowdlt}{\ding{235}}
\newcommand{\arrowdut}{\ding{236}}
\newcommand{\arrowdln}{\ding{237}}
\newcommand{\arrowdun}{\ding{238}}
\newcommand{\arrowbdd}{\ding{239}}
\newcommand{\arrowbud}{\ding{241}}
\newcommand{\circarrow}{\ding{242}}
%% ... hier weitere Definitionen und das eigentliche Dokument ...
%% ************************************************************************
Dieses Zusatz-Beispiel kann so leicht in das obige Start-Beispiel oder
in eigene Dateien integriert werden.
Einen Überblick über alle Zeichen des ZapfDinbats-Fonts
können neben dem ZapfDingbats-Block
meines 🌐WWW-Manuals
auch die folgenden drei PDF-Dateien vermittelt:
ZapfDingbats-Font für LATEX-Dokumente wie oben beschrieben geeignet
und
ZapfDingbats-Unicode-Block für HTML geeignet
(vgl. mein 🌐WWW-Manual).
Ein anderes Beispiel, an bestimmte Sonderzeichen
zu kommen, ist das MarVoSym
Schrift-Pakets.
Dies wird analog zum obigen \usepackage{pifont} eingebunden:
\usepackage{marvosym}
und ermöglicht einige interessante neue Symbole wie:
\Smiley, \Frowny,
\Lightning, \Mobilefone, \Telefon,
\ComputerMouse, \Keyboard, \Printer,
\Mundus, \Email etc.
Einen Überblick über alle Zeichen des MarVoSym
Schrift-Pakets ermöglicht die folgende PDF-Datei:
MarVoSym.
Einen generellen Überblick an verfügbaren Sonderzeichen
und Symbolen unter LATEX
mit Hinweis auf die Paket-Einbindung bzw.
die Zugehörigkeit zum Standardumfang liefert
das sehr nützliche PDF:
Die umfassende
LATEX-Symbol-Liste.
Empfehlungen zum Einarbeiten
in und Nachschlagen zu TEX/LATEX
Persönlicher Hintergrund
Der Autor verwendet TEX/LATEX seit 1992 –
zunächst als emTEX von Eberhard Mattes
unter DOS
(installiert über einen 3.5" Diskettenberg
im ersten Jahr an der Uni),
dann als teTEX
(1994-05/2006; von Thomas Esser) unter 🐧GNU/Linux,
das dann durch TEX Live
(verfügbar seit 1996)
unter GNU/Linux abgelöst wurde.
Debian und
deren Derivate
haben immer eine aktuelle
TEX-Distribution an Bord
(d.h. in deren Repositories),
was andere nicht aufweisen.
Es gibt schon länger auch WYSIWYG‑Editore,
die per Maus bedient werden können und sofort
das Druckresultat zeigen (eben What You See Is What You Get).
Ich verwende aber immer noch den Editor
vim
(mittlerweile in Version 9.0,
siehe auch Vim 9‑Artikel
[Heise‑Online, 29.06.2022];
für Unix-Admins ist vi/vim
Pflicht –
nicht Einsteiger-freundlich, aber für Fortgeschrittene
empfehlenswert und für Experten extrem effizient;
relativ aktuelle Fassung via PPA;
vgl. auch Bemerkung zu 💾Programmier‑Editoren)
und code die LATEX- und gelegentlichen
TEX‑Anweisungen selbst,
ähnlich wie bei einer Programmiersprache.
Im mathematisch-naturwissenschaftlichen
Bereich wird man kaum um die Nutzung
von TEX/LATEX
herumkommen, das insbesondere von allen namhaften
Fachpublikationen gefordert wird (als Beispiel der A&A Author's Guide (06/2018),
der Europäischen Fachzeitschrift
für 🔭Astronomie & Astrophysik).
Bei Fragen / Problemen mit dieser Seite bzw.
meiner Webpräsenz kontaktieren Sie mich bitte:
E-Mail: 📧jmb@jmb-edu.de
© 1992-2024
Bitte beachten Sie hierzu auch mein 📄Impressum.
[Zurück zur 🏁Startseite]
Erste Fassung: | 24. | Juni | 2017 |
Letzte Änderung: | 29. | April | 2024 |