当我尝试将页面大小调整到适合 tikz 图像的大小时,裁剪过多。无论我使用\documentclass{standalone}
、\documentclass[preview=true]{standalone}
还是\usepackage[active,tightpage]{preview}\PreviewEnvironment{tikzpicture}
。完整源代码:
\documentclass{minimal}
\usepackage{tikz}
\definecolor{darkred}{rgb}{0.5,0,0}
\begin{document}
\begin{tikzpicture}
\begin{scope}[color=lightgray]
\draw (-8,0) -- (8,0);
\filldraw[shift={(8,0)},scale=0.25] +(-210:1) -- +(210:1) -- +(0:1) -- cycle;
\draw (0,-8) -- (0,8);
\filldraw[shift={(0,8)},scale=0.25,rotate=90] +(-210:1) -- +(210:1) -- +(0:1) -- cycle;
\end{scope}
\newcommand\hyper[4][]{\draw[mark=*,mark options={fill=black}] plot [#1] ({#2*exp(#4)+#3*exp(-#4)}, {#2*exp(#4)-#3*exp(-#4)})}
\newcommand\hyperline[6]{\draw ({#1*exp(#3)+#2*exp(-#3)}, {#1*exp(#3)-#2*exp(-#3)}) -- ({#4*exp(#6)+#5*exp(-#6)}, {#4*exp(#6)-#5*exp(-#6)})}
\pgfsetplotmarkrepeat{6}
\foreach \a in {-1, 1}{%
\foreach \b in {-1, 1}{%
\begin{scope}[very thin, color=gray]
\begin{scope}[domain=-2:2]
\hyper\a0\x;
\hyper0\b\x;
\hyper\a\b\x;
\end{scope}
\begin{scope}[domain=-1.3:1.3]
\hyper{\a*2}{\b*2}\x;
\end{scope}
\end{scope}
}
}
\begin{scope}[color=darkred]
\foreach \k in {0,...,2}{%
\hyperline0{-1}\k1{-1}\k;
}
\end{scope}
\end{tikzpicture}
\end{document}
看起来像这样:
看完之后tikz、预览包和 xelatex 中的透明度,我尝试手动设置尺寸:
\usepackage{geometry}
\geometry{paperwidth=163mm,paperheight=163mm,margin=0mm}
但这给了我错误信息:
! 包几何错误:\paperwidth(0.0pt)太短。
答案1
好的,问题解决了standalone
。这是环境后面的空行tikzpicture
。就像这里提到的:独立包创建固定宽度的页面
下面的代码使它与 一起工作preview
。请注意,它是在 之后加载的tikz
:
\documentclass{minimal}
\usepackage{tikz}
\definecolor{darkred}{rgb}{0.5,0,0}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
最后一个问题是由于该类minimal
无法与 一起使用geometry
。只需使用该类article
即可使其工作。(另请参阅为什么要避免使用最小类?)