5.3 The PGF and TikZ Graphics Packages
117
\begin{tikzpicture}[scale=0.8]
\tikzstyle{v}=[circle, minimum size=2mm,inner sep=0pt,draw]
\foreach \i in {1,...,8}
\foreach \j in {1,...,3}
\node[v]
(G-\i-\j) at (\i,\j) {};
\foreach \i in {1,...,8}
\foreach \j/\o in {1/2,2/3}
\draw[->]
(G-\i-\j) -- (G-\i-\o);
\foreach \i/\n in
{1/2,2/3,3/4,4/5,5/6,6/7,7/8}
\foreach \j/\o in {1/2,2/3} {
\draw[->] (G-\i-\j) -- (G-\n-\o);
\draw[->] (G-\n-\j) -- (G-\i-\o);
}
\end{tikzpicture}
With the\usetikzlibrary command in the preamble you can enable a
wide variety of additional features for drawing special shapes, like this box
which is slightly bent.
\usetikzlibrary{%
decorations.pathmorphing}
\begin{tikzpicture}[
decoration={bent,aspect=.3}]
\draw [decorate,fill=lightgray]
(0,0) rectangle (5.5,4);
\node[circle,draw]
(A) at (.5,.5) {A};
\node[circle,draw]
(B) at (5,3.5) {B};
\draw[->,decorate] (A) -- (B);
\draw[->,decorate] (B) -- (A);
\end{tikzpicture}
A
B
Converting pdf to html - SDK software service:C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net, ASP.NET MVC, WinForms, WPF application
How to Convert PDF to HTML Webpage with C# PDF Conversion SDK
www.rasteredge.com
Converting pdf to html - SDK software service:VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.net, ASP.NET MVC, WinForms, WPF application
PDF to HTML Webpage Converter SDK for VB.NET PDF to HTML Conversion
www.rasteredge.com
118
Producing Mathematical Graphics
\usetikzlibrary{positioning}
\begin{tikzpicture}[xscale=6,
yscale=8,>=stealth]
\tikzstyle{v}=[circle,
minimum size=1mm,draw,thick]
\node[v] (a) {$1$};
\node[v] (b) [right=of a] {$2$};
\node[v] (c) [below=of a] {$2$};
\node[v] (d) [below=of b] {$1$};
\draw[thick,->]
(a) to node {} (c);
\draw[thick,->]
(a) to node {} (d);
\draw[thick,->]
(b) to node {} (d);
\end{tikzpicture}
1
2
2
1
You can even draw syntax diagrams that look as if they came straight
from a book on Pascal programming. The code is a bit more daunting than
the example above, so I will just show you the result. If you have a look at
the pgf documentation you will find a detailed tutorial on drawing this exact
diagram.
+
unsigned integer
.
digit
E
unsigned integer
-
And there is more, ifyou have to draw plots of numerical data or functions,
you should have a closer look at the pgfplot package. It provides everything
you need to draw plots. It can even call the externalgnuplot command to
evaluate actual functions you wrote into the graph.
For more inspiration make sure to visit Kjell Magne Fauske’s excellent
http://www.texample.net/tikz/. itcontainsaneverexpandingstoreof
beautiful graphs and other LAT
E
Xcode. On T
E
Xample.net you will also find
alistoftoolstoworkwithPGF/TikZ so that you do not have to write all
that code by hand.
SDK software service:Online Convert PDF to HTML5 files. Best free online PDF html
Creating a HTML from PDF has never been so easy! Easy converting! We try to make it as easy as possible to convert your doc files to PDF.
www.rasteredge.com
SDK software service:C# PDF Converter Library SDK to convert PDF to other file formats
Free C#.NET SDK library and components for converting PDF file in .NET Windows applications, ASP.NET web Able to export PDF document to HTML file.
www.rasteredge.com
Chapter 6
Customising L
A
T
E
X
Documents produced with the commands you have learned up to this point will
look acceptable to a large audience. While they are not fancy-looking, they obey
all the established rules of good typesetting, which will make them easy to read
and pleasant to look at.
However, there are situations where L
A
T
E
Xdoes not provide a command or
environment that matches your needs, or the output produced by some existing
command may not meet your requirements.
In this chapter, I will try to give some hints on how to teach LAT
E
Xnew tricks
and how to make it produce output that looks different from what is provided
by default.
6.1 New Commands, Environments and Packages
You may have noticed that all the commands I introduce in this book are
typeset in a box, and that they show up in the index at the end of the book.
Instead of directly using the necessary L
A
T
E
Xcommands to achieve this, I
have created a package in which I defined new commands and environments
for this purpose. Now I can simply write:
\begin{lscommand}
\ci{dum}
\end{lscommand}
\dum
In this example, I am using both a new environment called
lscommand,whichisresponsiblefordrawingtheboxaroundthecommand,
and a new command named\ci, which typesets the command name and
makes a corresponding entry in the index. Check this out by looking up the
\dumcommandintheindexatthebackofthisbook,whereyou’llfindan
entry for\dum, pointing to every page where I mentioned the\dum command.
SDK software service:VB.NET PDF Converter Library SDK to convert PDF to other file
For how to convert PDF to HTML document in VB a series of demo code directly for converting MicroSoft Office Word, Excel and PowerPoint document to PDF file in
www.rasteredge.com
SDK software service:C# PDF Convert to SVG SDK: Convert PDF to SVG files in C#.net, ASP
Support converting PDF document to SVG image within C# PDFDocument(@"C:\input.pdf"); pdf.ConvertToVectorImages(ContextType Description: Convert to html/svg files
www.rasteredge.com
120
Customising L
A
T
E
X
If I ever decide that I do not like having the commands typeset in a box
any more, I can simply change the definition of thelscommand environment
to create a new look. This is much easier than going through the whole
document to hunt down all the places where I have used some generic LAT
E
X
commands to draw a box around some word.
6.1.1 New Commands
To add your own commands, use the
\newcommand{name}[num]{definition}
command. Basically, the command requires two arguments: the name of
the command you want to create, and the definition of the command. The
num argument in square brackets is optional and specifies the number of
arguments the new command takes (up to 9 are possible). If missing it
defaults to 0, i.e. no argument allowed.
The following two examples should help you to get the idea. The first
example defines a new command called\tnss. This is short for “The Not
So Short Introduction toLAT
E
X2
ε
.” Such a command could come in handy
if you had to write the title of this book over and over again.
\newcommand{\tnss}{The not
so Short Introduction to
\LaTeXe}
This is ‘‘\tnss’’ \ldots{}
‘‘\tnss’’
This is “The not so Short Introduction to
LAT
E
X2
ε
”... “The not so Short Introduc-
tion to LAT
E
X2
ε
The next example illustrates how to define a new command that takes
one argument. The#1 tag gets replaced by the argument you specify. If you
wanted to use more than one argument, use #2 and so on.
\newcommand{\txsit}[2]
{This is the \emph{#1}
#2 Introduction to \LaTeXe}
% in the document body:
\begin{itemize}
\item \txsit{not so}{short}
\item \txsit{very}{long}
\end{itemize}
• ThisisthenotsoshortIntroduction
to LAT
E
X2
ε
• Thisisthevery longIntroduction
to LAT
E
X2
ε
L
A
T
E
Xwill not allow you to create a new command that would overwrite
an existing one. But there is a special command in case you explicitly
want this: \renewcommand. It uses the same syntax as the\newcommand
command.
SDK software service:C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
Word in C#.NET. Online C#.NET Tutorial for Converting PDF to Word (.doc/ .docx) Document with .NET XDoc.PDF Library in C#.NET Class.
www.rasteredge.com
SDK software service:C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net
Best C#.NET PDF converter SDK for converting PDF to Tiff in Visual Studio .NET project. C# programming sample for PDF to Tiff image converting.
www.rasteredge.com
6.1 New Commands, Environments and Packages
121
In certain cases you might also want to use the\providecommand com-
mand. It works like\newcommand, but if the command is already defined,
LAT
E
X2
ε
will silently ignore it.
There are some points to note about whitespace following L
A
T
E
Xcom-
mands. See page5 for more information.
6.1.2 New Environments
Just as with the \newcommand command, there is a command to create
your own environments. The\newenvironment command uses the following
syntax:
\newenvironment{name}[num]{before}{after}
Again\newenvironment can have an optional argument. The material
specified in the before argument is processed before the text in the environ-
ment gets processed. The material in the after argument gets processed
when the \end{name} command is encountered.
The example below illustrates the usage of the\newenvironment com-
mand.
\newenvironment{king}
{\rule{1ex}{1ex}%
\hspace{\stretch{1}}}
{\hspace{\stretch{1}}%
\rule{1ex}{1ex}}
\begin{king}
My humble subjects \ldots
\end{king}
My humble subjects ...
The num argument is used thesame way as in the\newcommand command.
LAT
E
Xmakes sure that you do not define an environment that already exists.
If you ever want to change an existing command, use the\renewenvironment
command. It uses the same syntax as the \newenvironment command.
The commands used in this example will beexplained later. For the\rule
command see page135, for\stretch go to page129, and more information
on \hspace can be found on page129.
6.1.3 Extra Space
When creating a new environment you may easily get bitten by extra spaces
creeping in, which can potentially have fatal effects, for example when you
want to create a title environment which supresses its own indentation as well
as the one on the following paragraph. The\ignorespaces command in the
begin block of the environment will make it ignore any space after executing
SDK software service:VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
VB.NET PDF Converting DLLs for PDF-to-Word. This is an example for converting PDF to Word (.docx) file in VB.NET program. ' Load a PDF document.
www.rasteredge.com
SDK software service:VB.NET PDF- HTML5 PDF Viewer for VB.NET Project
PDF in VB.NET, VB.NET convert PDF to HTML, VB.NET convert PDF to Word Online Guide for Viewing, Annotating And Converting PDF Document with HTML5 PDF Viewer in VB
www.rasteredge.com
122
Customising L
A
T
E
X
the begin block. The end block is a bit more tricky as special processing
occurs at the end of an environment. With the \ignorespacesafterend
L
A
T
E
Xwill issue an \ignorespaces after the special ‘end’ processing has
occured.
\newenvironment{simple}%
{\noindent}%
{\par\noindent}
\begin{simple}
See the space\\to the left.
\end{simple}
Same\\here.
See the space
to the left.
Same
here.
\newenvironment{correct}%
{\noindent\ignorespaces}%
{\par\noindent%
\ignorespacesafterend}
\begin{correct}
No space\\to the left.
\end{correct}
Same\\here.
No space
to the left.
Same
here.
6.1.4 Commandline L
A
T
E
X
If you work on a Unix-like OS, you might be using Makefiles to build
your L
A
T
E
Xprojects. In that connection it might be interesting to produce
different versions of the same document by calling LAT
E
Xwith commandline
parameters. If you add the following structure to your document:
\usepackage{ifthen}
\ifthenelse{\equal{\blackandwhite}{true}}{
% "black and white" mode; do something..
}{
% "color" mode; do something different..
}
Now call LAT
E
Xlike this:
latex ’\newcommand{\blackandwhite}{true}\input{test.tex}’
First the command\blackandwhite gets defined and then the actual
file is read with input. By setting\blackandwhite to false the color version
of the document would be produced.
6.2 Fonts and Sizes
123
6.1.5 Your Own Package
If you define a lot of new environments and commands, the preamble of your
document will get quite long. In this situation, it is a good idea to create a
L
A
T
E
Xpackage containing all your command and environment definitions. Use
the\usepackage command to make the package available in your document.
% Demo Package by Tobias Oetiker
\ProvidesPackage{demopack}
\newcommand{\tnss}{The not so Short Introduction
to \LaTeXe}
\newcommand{\txsit}[1]{The \emph{#1} Short
Introduction to \LaTeXe}
\newenvironment{king}{\begin{quote}}{\end{quote}}
Figure 6.1: Example Package.
Writing a package basically consists of copying the contents of your
document preamble into a separate file with a name ending in.sty. There
is one special command,
\ProvidesPackage{package name}
for use at the very beginning of your package file. \ProvidesPackage tells
L
A
T
E
Xthe name of the package and will allow it to issue a sensible error
message when you try to include a package twice. Figure6.1 shows a small
example package that contains the commands defined in the examples above.
6.2 Fonts and Sizes
6.2.1 Font Changing Commands
LAT
E
Xchooses the appropriate font and font size based on the logical structure
of the document (sections, footnotes, ...). In some cases, one might like
to change fonts and sizes by hand. To do this, use the commands listed in
Tables6.1 and6.2. The actual size of each font is a design issue and depends
on the document class and its options. Table6.3 shows the absolute point
size for these commands as implemented in the standard document classes.
{\small The small and
\textbf{bold} Romans ruled}
{\Large all of great big
\textit{Italy}.}
The small andbold Romans ruled
all of
great big Italy.
124
Customising L
A
T
E
X
One important feature ofL
AT
E
X2
ε
is that the font attributes are inde-
pendent. This means that issuing size or even font changing commands, and
still keep bold or slant attributes set earlier.
In math mode use the font changing commands to temporarily exit math
mode and enter some normal text. If you want to switch to another font
for math typesetting you need another special set of commands; refer to
Table6.4.
In connection with the font size commands, curly braces play a significant
role. They are used to build groups. Groups limit the scope of most L
A
T
E
X
commands.
He likes {\LARGE large and
{\small small} letters}.
He likes
large and
small
letters
.
The font size commands also change the line spacing, but only if the
paragraph ends within the scope of the font size command. The closing curly
brace} should therefore not come too early. Note the position of the\par
command in the next two examples.
1
1
\par is equivalent to a blank line
Table 6.1: Fonts.
\textrm{...} roman
\textsf{...} sans serif
\texttt{...} typewriter
\textmd{...} medium
\textbf{...} bold face
\textup{...} upright
\textit{...} italic
\textsl{...} slanted
\textsc{...} Small Caps
\emph{...} emphasized
\textnormal{...} document font
Table 6.2: Font Sizes.
\tiny
tiny font
\scriptsize
very small font
\footnotesize
quite small font
\small
small font
\normalsize
normal font
\large
large font
\Large
larger font
\LARGE
very large font
\huge
huge
\Huge
largest
6.2 Fonts and Sizes
125
Table 6.3: Absolute Point Sizes in Standard Classes.
size
10pt (default) 11pt option 12pt option
\tiny
5pt
6pt
6pt
\scriptsize
7pt
8pt
8pt
\footnotesize
8pt
9pt
10pt
\small
9pt
10pt
11pt
\normalsize
10pt
11pt
12pt
\large
12pt
12pt
14pt
\Large
14pt
14pt
17pt
\LARGE
17pt
17pt
20pt
\huge
20pt
20pt
25pt
\Huge
25pt
25pt
25pt
Table 6.4: Math Fonts.
\mathrm{...}
Roman Font
\mathbf{...}
Boldface Font
\mathsf{...}
Sans Serif Font
\mathtt{...}
Typewriter Font
\mathit{...}
Italic Font
\mathcal{...}
CALLIGRAPHIC FONT
\mathnormal{...} Normal Font
126
Customising L
A
T
E
X
{\Large Don’t read this!
It is not true.
You can believe me!\par}
Don’t read this! It is not true.
You can believe me!
{\Large This is not true either.
But remember I am a liar.}\par
This is not true either. But
remember I am a liar.
If you want to activate a size changing command for a whole paragraph
of text or even more, you might want to use the environment syntax for font
changing commands.
\begin{Large}
This is not true.
But then again, what is these
days \ldots
\end{Large}
This is not true. But then
again, what is these days ...
This will save you from counting lots of curly braces.
6.2.2 Danger, Will Robinson, Danger
As noted at the beginning of this chapter, it is dangerous to clutter your
document with explicit commands like this, because they work in opposition
to the basic idea of LAT
E
X, which is to separate the logical and visual markup
of your document. This means that if you use the same font changing
command in several places in order to typeset a special kind of information,
you should use\newcommand to define a “logical wrapper command” for the
font changing command.
\newcommand{\oops}[1]{%
\textbf{#1}}
Do not \oops{enter} this room,
it’s occupied by \oops{machines}
of unknown origin and purpose.
Do notenter this room, it’s occupied by
machinesofunknownoriginandpurpose.
This approach has the advantage that you can decide at some later
stage that you want to use a visual representation of danger other than
\textbf,withouthavingtowadethroughyourdocument,identifyingallthe
occurrences of\textbf and then figuring out for each one whether it was
used for pointing out danger or for some other reason.
Please note the difference between telling L
A
T
E
Xto emphasize something
and telling it to use a different font. The\emph command is context aware,
while the font commands are absolute.
Documents you may be interested
Documents you may be interested