TeX - LaTeX Asked by Emerson on March 30, 2021
I want to create a TikZ picture in an external PDF file, which then can be included in my main document via includegraphics
.
However, compiling a document with a TikZ picture in it produces a whole page, meaning lots of white space.
What I want to do can be done using the preview package as described in Standalone diagrams with TikZ?, on SO. But there are some problems with the preview package and XeTex (see Transparency in tikz, preview package and xelatex).
Since creating standalone pictures seems like a natural thing to ask, I am hoping for a different, and maybe more elegant, solution.
I ended up using the external library
, as diabonas suggested.
Here's an example with XeTeX:
documentclass{article}
usepackage{fontspec}
setmainfont[Mapping=tex-text]{Linux Libertine O}
usepackage{tikz}
definecolor{blue}{cmyk}{1,1,0,0.07}
usetikzlibrary{external}
tikzexternalize
tikzset{external/system call={xelatex tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "image" "texsource"}}
tikzset{external/force remake=true}
begin{document}
tikzstyle{place}=[circle,draw=blue,fill=blue!20,line width=2pt]
begin{tikzpicture}
node at (0,0) [place] {Titextit{k}Z};
end{tikzpicture}
end{document}
One has to compile using -shellescape
.
A minor inconvenience is, that the appropriately cropped file is named <filename>-figure0
.
Correct answer by Emerson on March 30, 2021
Perhaps a combination of standard article class and pdfcrop
or the cropping facilities of adjustbox
would be a work around.
So, you make the picture in a separate file with article
class, for instance. Then you use clipbox
from the adjustbox
package to clip the image included via includegraphics
to the part you actually want...
Answered by Seamus on March 30, 2021
You can use the standalone
class for this. In v0.x it used preview
internally, but for v1.x it also has an alternative crop
option, which works similar to the preview
option/package, but avoids its issues with XeTeX.
There is now (v1.0) also a tikz
class option which turns any (outer) tikzpicture
into a single tight page. This avoids issues with trailing implicit paragraphs. In addition it automatically loads the tikz
package.
% tikzpic.tex
documentclass[crop,tikz]{standalone}% 'crop' is the default for v1.0, before it was 'preview'
%usetikzlibrary{...}% tikz package already loaded by 'tikz' option
begin{document}
begin{tikzpicture}
draw (0,0) -- (10,10); % ...
end{tikzpicture}
end{document}
Then compile it as usual with pdflatex
or xelatex
etc.
To include this tikzpicture
into a main document load the standalone
package there with the option mode=buildnew
. Then use includestandalone[<options>]{<filename>}
instead of includegraphics
. This will compile all includes standalone files automatically as graphics and build these graphics if the source file is newer than the existing graphics file. This needs -shell-escape
to be enabled to allow the main LaTeX run to call further LaTeX compilers.
See the standalone
manual for more details.
% main.tex
% compile with `pdflatex -shell-escape main` or `xelatex -shell-escape main`
documentclass{article}
usepackage[mode=buildnew]{standalone}% requires -shell-escape
usepackage{tikz}
%usetikzlibrary{...}
begin{document}
Lorem ipsum ...
includestandalone[width=.8textwidth]{tikzpic}
Lorem ipsum ...
end{document}
Answered by Martin Scharrer on March 30, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP