![LaTeX(TikZ)图像居中](https://linux22.com/image/266668/LaTeX%EF%BC%88TikZ%EF%BC%89%E5%9B%BE%E5%83%8F%E5%B1%85%E4%B8%AD.png)
我对图像的水平对齐有问题。我从matlab
扩大并使用以下代码将其添加到我的 LaTeX 文件中:
\begin{figure}[H]
\centering
\newlength\figureheight
\newlength\figurewidth
\setlength\figureheight{6cm}
\setlength\figurewidth{9cm}
\input{img/ConvPlot.tikz}
\caption{Convergentieplot bij $\nu=-0.7$ en $M_{ref}=M(Q=30)$.}
\label{ConvPlot}
\end{figure}
LaTeX 自动将图像宽度居中和垂直轴宽度。但我只希望图形框居中,而不是图像和轴。有什么方法可以实现吗?
图像:
答案1
图形未按您想要的方式居中的原因是因为图形的边界框包含垂直轴的标签。有两种方法可以告诉 TikZ 忽略垂直轴标签添加的宽度。
方法 1。添加
\pgfplotsset{
ylabel style={overlay},
yticklabel style={overlay},
}
在您的.tex
文档中(添加它的位置似乎并不重要,只要它在当前图形之前即可)这可能会产生全局效果(除非\pgfplotsset
在figure
)。也就是说,全部您后续的 PGF 图的边界框将被“修剪”。
方法 2。ConvPlot.tikz
使用文本编辑器打开文件,找到ylabel={...},
并添加
ylabel style={overlay},
yticklabel style={overlay},
在其下方。这将产生局部影响。也就是说,只有这个特定图形的边界框会发生变化。所有其他 PGF 图仍将具有默认边界框(包括垂直轴的标签)。
ylabel
下面两张图分别对比了修改和不修改/样式的效果yticklabel
。
答案2
我尝试给出一个更通用的答案来涵盖其他一些情况
A 部分)仅将乳胶图像的一部分居中
这是一张图片
我想只将窗口居中,而不使用背景。手动操作即可。这个想法很简单,首先我使用\includegraphics[trim= 98 0 0 13,clip]
98 和 13 手动确定。然后当你得到你想要的东西时,你可以写\includegraphics[trim= 98 0 0 13]{tm.png}
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{shapes,positioning}
\begin{document}
\begin{figure}
\centering
\includegraphics[]{tm.png}
\caption{tm}
\label{ConvPlot}
\end{figure}
\begin{figure}
\centering
\includegraphics[trim= 98 0 0 13]{tm.png}
\caption{tm}
\label{ConvPlot}
\end{figure}
\end{document}
B 部分)仅将 latex tikz 图像的一部分居中(不使用 pgfplots)
一个简单的 tikz 图片就可能出现问题。在这种情况下,您可能需要使用trim left
带有尺寸或锚点的 tikz 选项(我认为是可能的......)
这里有一个小文件:fig.tikz
\begin{tikzpicture}[trim left= -1.5cm]
\node[rectangle,draw,minimum width=1 cm, minimum height=2 cm, fill=cyan!20] (a) {}
node[rectangle,draw=red,fill=orange!20,minimum width=2 cm, minimum height=1 cm] (b) [left= 0pt of a] {};
\end{tikzpicture}
您可以在主文件中写入
\begin{figure}
\centering
\input{fig.tikz}
\caption{tikz}
\label{tikz}
\end{figure}
但如果你不能修改这个文件,并且第一行是
\begin{tikzpicture} without [trim left= -1.5cm]``
你可以在主文件中图前写入:
\tikzset{every picture/.style={trim left=-1.5cm}}
也许可以使用这样的锚点
\tikzset{每张图片/.style={trim left=(a.left)}}
C 部分)仅将 latex pgfplots 图像的一部分居中
如果图片仅包含一pgfplots 图形和没有其他的
您可以尝试 Jake 的一个想法,trim axis left,trim axis right
但诀窍是使用 B 部分中使用的工具。
这里有一个小文件 pgfplot.tikz
\begin{tikzpicture}[trim axis left,trim axis right]
\begin{axis}[width=5cm,ylabel=looong label,ylabel style={rotate=-90}]
\addplot {x^2};
\end{axis}
\end{tikzpicture}
在主文件中
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{shapes,positioning}
\begin{document}
%\tikzset{every picture/.style={trim axis left,trim axis right}}
\begin{figure}
\centering
\input{pgfplot.tikz}
\caption{pgfplot}
\label{pgfplot}
\end{figure}
\end{document}
如果你无法修改文件 pgfplot.tikz(它不是你的文件......)你可以尝试
\tikzset{every picture/.style={trim axis left,trim axis right}}
你会得到