如何将“浮动文本框”放置在页面坐标的指定位置

如何将“浮动文本框”放置在页面坐标的指定位置

我读过了此主题,但我不认为它解决的是同样的问题。

我正在寻找一种方法来在 LaTeX 中使用具有如下界面的命令:

\placetextbox{x_in_page_percentage, y_in_page_percentage}{This is my text}

该命令会将文本置于This is my text一个框的中心,可能重叠与页面上的其他任何内容一样,它将被放置在由变量x_in_page_percentage和指定的坐标处。这些变量控制下图中y_in_page_percentage的位置。例如x

-------------x---------------
      This is my text
-----------------------------

这样,\placetextbox{0.5, 0.5}{This is my text}就可以将文本大致放置在页面的中心,而不管该位置上可能有的其他内容。

有什么想法如何做到这一点?

答案1

eso-pic包裹允许您将图片(和文本)作为覆盖图/前景 [作为底图/背景] 添加到页面。用于将内容添加到当前页面的特定命令是\AddToShipoutPictureFG*[ \AddToShipoutPictureBG*]。*这些命令的星号版本将输出限制为当前的页面,而无星标版本则将其内容发送至每一个页。

以下最小示例说明了以宏形式回答问题所使用的技术\placetextbox{<horizontal pos>}{<vertical pos>}{<stuff>}

\documentclass{article}
\usepackage[english]{babel}
\usepackage{lipsum}% For 'Lorem Ipsum' dummy text
\usepackage[pscoord]{eso-pic}% The zero point of the coordinate systemis the lower left corner of the page (the default).

\newcommand{\placetextbox}[3]{% \placetextbox{<horizontal pos>}{<vertical pos>}{<stuff>}
  \setbox0=\hbox{#3}% Put <stuff> in a box
  \AddToShipoutPictureFG*{% Add <stuff> to current page foreground
    \put(\LenToUnit{#1\paperwidth},\LenToUnit{#2\paperheight}){\vtop{{\null}\makebox[0pt][c]{#3}}}%
  }%
}%

\begin{document}
\lipsum[1-5]%
\placetextbox{0.5}{0.5}{\fbox{\Huge\textsf{This is my text.}}}%
\placetextbox{0.5}{1}{\Huge\texttt{Here is another piece of text.}}%
\placetextbox{0.1}{0.1}{\Large $\mathcal{A}_1$}%
\end{document}

将文本放置在页面上的绝对位置

其他软件包也可以做到这一点,包括backgroundtikz

答案2

我对\placetextbox宏做了一些改进,由@Werner,包括来自评论 3 的对齐改进。相对于当前页面的相对定位的问题在于,在右对齐的文本上,内容可能会超出页面,因为使用了框的左侧(或中心)。

现在必须使用 #3 参数指定文本对齐方式。根据 l 或 r,垂直位置现在是分别与页面边缘左侧或右侧的偏移量,水平位置是与顶部的偏移量。在这种情况下,应该指定一个单位cm

\newcommand{\placetextbox}[4]{% \placetextbox{<offset top>}{<offset left/right>}{<align>}{<stuff>}
  \setbox0=\hbox{#4}% Put <stuff> in a box
  \AddToShipoutPictureFG*{% Add <stuff> to current page foreground
    \if#3r
    \put(\LenToUnit{\paperwidth-#1},\LenToUnit{\paperheight-#2}){\vtop{{\null}\makebox[0pt][r]{\begin{tabular}{r}#4\end{tabular}}}}%
    \else
    \put(\LenToUnit{#1},\LenToUnit{\paperheight-#2}){\vtop{{\null}\makebox[0pt][l]{\begin{tabular}{l}#4\end{tabular}}}}%
    \fi
  }%
}%

使用示例:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{lipsum}% For 'Lorem Ipsum' dummy text
\usepackage[pscoord]{eso-pic}% The zero point of the coordinate systemis the lower left corner of the page (the default).

% include macro from codeblock above

\begin{document}
\lipsum[1-5]%
\placetextbox{0.1cm}{2cm}{r}{This text should nicely align the the right side \\ at the top of the page}
\placetextbox{0.1cm}{10cm}{l}{\Huge\texttt{Large Text on the left}}%
\end{document}

输出: 文本框示例

相关内容