我试图创建一个覆盖整个页面的边界框(正如我所见这里在 beamerinnerthemetexsx.sty 中)。但是,该框不会与左边距齐平。
从本例中可以看出,将边距设置为 0 适用于文档中的任何文本。但是边界框与左边距不齐平(偏离 15pt)。这不仅不允许我在该区域绘图,还会导致“Overfull \hbox”错误,因为边界框试图从左边距右侧 15pt 跨越到页面边缘之外 15pt。
\documentclass{article}
\usepackage{tikz}
\usepackage{geometry}
\geometry{
papersize={254mm,190.5mm},
margin = 0mm
}
\begin{document}
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
\draw [->] (0,0) to (10mm,10mm);
\draw [gray] (0,0) rectangle (40mm,40mm);
\end{tikzpicture}
\begin{flushleft}
Text will flush with the margins.
\end{flushleft}
\begin{flushright}
Unlike the bouding box.
\end{flushright}
\end{document}
有办法解决这个问题吗?我应该用完全不同的方法解决这个问题吗?
答案1
我建议将图片视为覆盖层。
因此你可以这样启动环境:
\begin{tikzpicture}[remember picture,overlay]
即使如此,tikzpicture
意志的起源(0,0)
仍是图片所在的地方定义。因此,我建议使用相对坐标并重新定义你想要的起源关于 TikZ 提供的页面节点。以下是一些可能对你有用的东西:
\documentclass{article}
\usepackage{tikz}
\usepackage{geometry}
\geometry{
papersize={254mm,190.5mm},
margin = 0mm
}
\begin{document}
\noindent
\begin{tikzpicture}[remember picture,overlay]
\draw[line width=4pt,orange] (current page.south west) rectangle (current page.north east);
\path (current page.north west) -- ++ (0mm,-40mm) coordinate (origin);
\draw [->] (origin) to ++(10mm,10mm);
\draw [gray] (origin) rectangle ++(40mm,40mm);
\end{tikzpicture}%%
Hello (flush left) \hspace*{\fill} (flush right) Bye%%
\end{document}
结果是
通过调整放置位置\noindent
(例如 之前Hello
)可以了解 是如何tikzpicture
放置在页面上的。
如果这tikzpicture
就是您要用文档创建的全部内容,那么您可能需要考虑使用该standalone
软件包。
\documentclass[border=2pt]{standalone}
%% I like a "border", but that's optional!
\usepackage{tikz}
\begin{document}
\noindent
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle (254mm,190.5mm);
\coordinate (origin) at (0,0);
\draw [->] (origin) to ++(10mm,10mm);
\draw [gray] (origin) rectangle ++(40mm,40mm);
\end{tikzpicture}%%
\end{document}
请注意,在本例中我没有将其设为overlay
。上面的代码导致
如果您的文档还有其他内容,则这两种方法都可以。
假设您不想在同一页面上显示任何其他内容tikzpicture
,则在第一种方法中,您必须发出类似
\clearpage
环境之后。通过使用覆盖,您可以更自然地使用页面几何图形来进行展示。
使用第二种方法,您需要对其进行一些处理\includegraphics
并将\raisebox
其适当地放置在页面上。
如果您提供更多有关您想要在图片中显示什么类型的内容的信息,那么我可能会给您更好的反馈。
答案2
就是这个\indent
。\noindent
在之前添加tikzpicture
,这将禁用缩进。
如果您不需要在文档的任何地方缩进,您可以使用\setlength{\parindent}{0pt}
前言,这将使其成为一个全局选项。如果您想在之后恢复它tikzpicture
,只需写入\setlength{\parindent}{15pt}
(这是默认长度)。
此外,还有一个page node
,因此您可以简单地将边界框写为
\useasboundingbox (current page.south west) rectangle (current page.north east);