我想将用 TikZ 创建的图形插入到我的 LaTeX 文档中。
我想如果我在文档中创建 TikZ 图形,那就没有问题了——我只需要使用scale
紧随其后的值\begin{tikzpicture}
即可。但是,有时图形太复杂,无法在 LaTeX 文档中明确写入,因此我会在另一个文件中创建图形并使用\input{foo.tikz}
。问题是我不知道如何缩放它以适合文档的其余部分。
答案1
您可以在输入文件周围的组中本地设置every picture
,以设置该文件中应该使用的任何选项tikzpicture
。
\begingroup
\tikzset{every picture/.style={scale=0.3}}%
\input{sometikzpic}%
\endgroup
但是,如果主图片的节点内还有其他tikzpicture
节点,它们也会受到影响(我的意思是两次)。在这种情况下,\tikzset{every picture/.style={scale=0.3,every picture/.style={}}}
可能会更好。
请注意scale
仅缩放坐标。文本不受影响。您可能希望一起缩放整个图片。为此使用\scalebox{<factor>}{\input{<file>}}
或
\resizebox{<width>}{!}{\input{<file>}}
。这两个宏都来自 ,graphics
已由 加载tikz
。
还要看一下standalone
类,特别是来自 v1.0beta 的新类\includestandalone[<options>]{<file>}
,它将包含子文件并根据需要缩放它们,就像\includegraphics
对图像所做的那样。
答案2
如果在里面foo.tex
您将比例设置为\tkzscl
或其他用户宏,那么您可以像这样设置它:
\def\tkzscl{0.3}
\input{foo}
这样,您就可以在主文件中设置图片的比例。
foo.tex
看起来应该是这样的:
\begin{tikzpicture}[scale=\tkzscl]
\draw (0,0) -- (1,0);
\end{tikzpicture}
管他呢…
答案3
我知道这个问题已经得到解答了,所以这里有一些使用这些答案的小技巧。
-1- 把这个放在你的之后\usepackages
和你的之前\begin{document}
:
\newcommand{\inputTikZ}[2]{%
\scalebox{#1}{\input{#2}}
}
-2- 像这样使用它来创建一个图形:
\begin{figure}
\begin{centering}
\inputTikZ{0.5}{mytikzfile.tkz}
\end{centering}
\label{fig:myFig}
\caption{some caption for the figure}
\end{figure}
这样,语法类似于\includegraphics[scale=...]{filename}
答案4
遵循 fiacobelli 的回答所呈现的风格。
在序言中插入软件包
\usepackage{tikz}
\usepackage{adjustbox}
我的建议是创建一个新命令
\newcommand{\figTikzAdjustShortCap}[4]
{
\centering
\adjustbox{#1}{\input{#2}}
\caption[#4]{#3}
}
您可以通过将“adjustbox”行更改为以下变体:
\resizebox{#1\linewidth}{#2\linewidth}{\input{#3}}
或者
\scalebox{#1}{\input{#2}}
记得纠正 \newcommand 的输入次数。
这遵循我对 includegraphics 使用的相同标准:
\newcommand{\figIncLongCap}[3]
{
\centering
\includegraphics[#1]{#2}
\caption{#3}
}
我喜欢它,因为它让我可以一次性改变所有图形的标题位置。
您可以在 Figure 环境中使用它,其中“Fig_Tikz”是一个 .tex 文件。
\begin{figure}[h]
\figTikzAdjustLongCap
{width = 0.8\linewidth, keepaspectratio, trim = 1.5cm 2cm 3cm 0cm, clip = true}
{Fig_Tikz}
{Tikz with \textit{AdjustBox} and \textit{Trim} Caption}
\label{Fig_Tikz}
\end{figure}
此结果为您提供了与 includegraphic 命令相同的结构:
\begin{figure}[h]
\figIncLongCap
{width = 0.5\linewidth, trim = 0cm 1cm 0cm 0cm, clip = true}
{Fig_not_tikz}
{Fig not Tikz Caption.}
\label{Fig_not_tikz}
\end{figure}
这个选项让我们能够像 \includegraphic 一样工作和格式化 \input。
我更喜欢使用图形环境,因为 TexStudio 和其他 LaTeX 编辑器具有标签突出显示和“单击并找到”功能。