我读过了此主题,但我不认为它解决的是同样的问题。
我正在寻找一种方法来在 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}
其他软件包也可以做到这一点,包括background
和tikz
。
答案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}