如何创建页面大小的边界框?

如何创建页面大小的边界框?

我试图创建一个覆盖整个页面的边界框(正如我所见这里在 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);

相关内容