LaTeX

TikZ

29. september 2009 af Exupery (Slettet)

Til en simpel opgave skal jeg bruge en skitse af en graf. Det er udelukkende til at forklare noget teori, så jeg har valgt at prøve at "tegne" den i LaTeX. Jeg har brugt TikZ, som I kunne se i overskriften:

Eksempel:

\documentclass[11pt,danish]{article}
\usepackage[ansinew]{inputenc}
\usepackage[danish,english]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb,amsthm}
\usepackage{color}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[scale=0.5]
% \draw[help lines] (0,0) grid (9.9,9.9);
\draw [->] (0,0) -- (10,0) node [anchor=north] {$Q$};
\draw [->] (0,0) -- (0,10) node [anchor=south] {$P$};
for each
\draw (1,1) -- (9,9) node [anchor=west] {$D$};
\draw (1,9) -- (9,1) node [anchor=west] {$S$};

\end{document}

Nu vil jeg gerne have en stiplet linie gående fra optimum (skæringspunktet mellem graferne) til akserne, så jeg kan sætte en værdi på. Er det muligt at få LaTeX selv til at finde skæringspunktet, så jeg ikke skal tegne grafen i hånden først, måle centimeter ud og generelt bare gå en meget omstændig vej for at tegne en simpel graf? - I det hele taget, er der en rimelig let måde at klare problemet på?


Brugbart svar (4)

Svar #1
29. september 2009 af daleif (Slettet)

\coordinate (X) at (intersection of 1,1--9,9 and 1,9--9,1);
\draw[dashed] (X) -- (X |- 0,0);


Svar #2
29. september 2009 af Exupery (Slettet)

Yes. Det virker. Mange tak!


Svar #3
08. oktober 2009 af Exupery (Slettet)

Jeg har leget lidt videre. Ved at gøre grafen en smule mere avanceret er kompileringen blevet ufattelig langsom. Er der noget at gøre ved det?


Brugbart svar (3)

Svar #4
08. oktober 2009 af daleif (Slettet)

ikke umiddelbart, den skal jo ind og beregne tegningen hver eneste gang. De har vist arbejdet på en metode så den kan gemme en 'kompileret' version så den ikke skal lave den igen. Men jeg ved ikke om dette er blevet frigivet endnu.

Hvis det er et problem, så smid figuren over i et dokument for sig selv, sæt \pagestyle{empty} på så der ikke er noget side hoved/-fod, kør det igennem pdflatex (formoder at det er det du bruger), og bagefter kører du

pdfcrop figur.pdf

så får du en croppet PDF af din figur, som du så bare kan inkludere som et almindeligt billede, og denne gang skal den ikke genkompileres hver gang.


Svar #5
08. oktober 2009 af Exupery (Slettet)

Umiddelbart vil den slet ikke kompilere grafen.

\documentclass[11pt,danish]{article}
\usepackage[ansinew]{inputenc} % ansinew for Windows
\usepackage[danish]{babel}
\usepackage[T1]{fontenc}
\usepackage{geometry,fancyhdr}
\usepackage{color}
\usepackage{tikz}


\begin{document}
\pagestyle{empty}
\begin{tikzpicture}[scale=0.5]
\draw [->] (0,0) -- (10,0) node [anchor=north] {$Q$};
\draw [->] (0,0) -- (0,10) node [anchor=south] {$P$};
\draw (1,1) -- (9,9) node [anchor=west] {$S_0$};
\draw (1,9) -- (9,1) node [anchor=west] {$D_0$};
\draw (4,9) -- (9,4) node (anchor=west] {$D_1$};
\coordinate (X) at (intersection of 1,1--9,9 and 1,9--9,1);
\draw[dashed, gray] (X) -- (X |- 0,0) node [anchor=north, black] {$q_0$};
\coordinate (Y) at (intersection of 1,1--9,9 and 1,9--9,1);
\draw[dashed, gray] (Y) -- (0,10 |- Y) node [anchor=east, black] {$p_0$};
\coordinate (X) at (intersection of 1,1--9,9 and 4,9--9,4);
\draw[dashed, gray] (X) -- (X |- 0,0) node [anchor=north, black] {$q_1$};
\coordinate (Y) at (intersection of 1,1--9,9 and 4,9--9,4);
\draw[dashed, gray] (Y) -- (0,10 |- Y) node [anchor=east, black] {$p_1$};
\end{tikzpicture}
\end{document}
 

Det hele står og falder med:

\draw (4,9) -- (9,4) node (anchor=west] {$D_1$};

som åbenbart gør grafen så omfattende, at filen ikke kan kompileres? Jeg har ladt den stå i et kvarter og prøve at kompilere, men det sker der ikke meget ved.


Brugbart svar (4)

Svar #6
08. oktober 2009 af daleif (Slettet)

Du har en syntaksfejl:

\draw (4,9) -- (9,4) node (anchor=west] {$D_1$};

det skal være [anchor=west]


Svar #7
08. oktober 2009 af Exupery (Slettet)

Så simpelt.. Burde den ikke give en fejlmeddelelse på det i stedet for at fortsætte med at kompilere i det uendelige? Jeg tænkte slet ikke over at tjekke koden igennem for syntaksfejl.

Nu behøver jeg ikke engang pille figurerne ud af dokumentet.

Tak!


Brugbart svar (3)

Svar #8
08. oktober 2009 af daleif (Slettet)

Tja, det kunne man jo godt argumentere for, men tikz er i forvejen et meget kompliceret bæst.


Brugbart svar (3)

Svar #9
10. oktober 2009 af Daniel TA (Slettet)

Bruger du texniccenter, Thomas? For den kan kompilere med masser af fejl - har prøvet at få et dokument selvom der var 10 fejl (ikke warnings eller badboxes). Dog underligt at den ikke siger der er en fejl.


Svar #10
10. oktober 2009 af Exupery (Slettet)

Ja, det gør jeg. Men den blev slet ikke færdig med at kompilere, den kørte bare i det uendelige, indtil jeg selv stoppede kompileringsprocessen.


Brugbart svar (3)

Svar #11
11. oktober 2009 af daleif (Slettet)

jeg fik det også i min emacs som kompilerer på samme måde som tekniccenter.

Det er bl.a. derfor at jeg starter  min LaTeXbog med at man skal vide hvordan man oversætter et LaTeX dokument uden brug af editor.

Hvis man får den stoppet så får man et hint om at noget er galt i den tegning, men det hjælper jo ikke noget når den bare går i en unendelig ring og aldrig bliver færdig.


Skriv et svar til: TikZ

Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk? Klik her for at oprette en bruger.