我有一堆由程序生成的坐标和相应图形主体的文本,例如:
\includegraphics{abc.png}
\caption{abc}
\label{fig:abc}
我想知道是否有某种方法可以将图形放置在指定的绝对坐标处(例如,第 1 页,x = 245px,y = 452px)。
我见过这个问题,但它不适用于图形(不能放入框中)
至于为什么我不能只使用非浮点数,我正在使用现有文件不想经历一切并手动转换为其他内容。我在想也许这样的方法可行:
\documentclass{article}
\usepackage{capt-of}
\newcommand{\fakefigure}[1]{
\renewcommand{\label}[1]{}
\renewcommand{\caption}[1]{\captionof{figure}{#1}}
#1
}
\begin{document}
\fakefigure{
\includegraphics{abc.png}
\caption{abc}
\label{fig:abc}
}
\end{document}
然后我可以把那在盒子里这里。但我不确定是否还有其他一些命令需要我来捕获才能使其工作。
答案1
这是使\fakefigure
问题中建议的宏起作用的一种方法。好吧,至少它通过了最低限度的测试,结合Werner 关于绝对位置的回答。
建议的 重新定义\caption
不起作用,因为是根据 定义的capt-of
。但是,可以先保存 的定义,然后在重新定义 时使用已保存的定义。\captionof
\caption
\caption
\caption
\global\let\oldcaption\caption
\renewcommand\caption{\def\@captype{figure}\oldcaption}% modified from capt-of
我这里只允许使用figure
类型元素。如果您需要将其他类型的浮点数转换为非浮点数,则需要重新设置 提供的可选参数capt-of
。
然后我们可以将其与Mico 的建议创建\fakefigure{}
宏:
\makeatletter
\global\let\oldcaption\caption
\newcommand{\fakefigure}[1]{%
\begin{minipage}{\textwidth}
\renewcommand\caption{\def\@captype{figure}\oldcaption}% modified from capt-of
#1
\end{minipage}%
}
\makeatother
这样我们就可以写类似
\placetextbox{.35}{,3}{%
\fakefigure{%
\includegraphics[height=.2\textheight]{tiger}%
\caption{abc}%
\label{fig:abc}%
}%
}
将 TeX 的标准老虎放置在页面上的任意位置。
\documentclass{article}
\usepackage{graphicx,kantlipsum,eso-pic}
\makeatletter
\global\let\oldcaption\caption
\newcommand{\fakefigure}[1]{%
\begin{minipage}{\textwidth}
\renewcommand\caption{\def\@captype{figure}\oldcaption}% modified from capt-of
#1
\end{minipage}%
}
\makeatother
% from Werner's answer at https://tex.stackexchange.com/a/24675/
\newcommand{\placetextbox}[3]{% \placetextbox{<horizontal pos>}{<vertical pos>}{<stuff>}
\setbox0=\hbox{#3}% box
\AddToShipoutPictureFG*{% Add <stuff> to current page foreground
\put(\LenToUnit{#1\paperwidth},\LenToUnit{#2\paperheight}){\vtop{{\null}\makebox[0pt][c]{#3}}}%
}%
}
\begin{document}
\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$}
\placetextbox{.35}{,3}{%
\fakefigure{%
\includegraphics[height=.2\textheight]{tiger}%
\caption{abc}%
\label{fig:abc}%
}%
}
\kant[1-3]
\end{document}
答案2
如果我理解你在寻找什么,你可能想采取以下方法:使用文本编辑器的功能,
全局替换所有实例
\begin{figure}
为\par\noindent\begin{minipage}{\textwidth}%
全局替换所有实例
\end{figure}
为\end{minipage}
和
\caption
全局替换所有与图形相关的语句实例\captionof{figure}
如果您的文档有任何
table
环境,请不要修改与表相关的\caption
语句。
相对于(现在不再浮动的)figure
环境,这仍然缺少的是 LaTeX 会根据需要在环境上方和下方插入的垂直间距。由于您似乎想将这些环境放置在页面上的任意位置,我相信这不会是一个缺点。