浮点数代码能知道twocolumn
它设置在文档的哪一列吗?我对那些经过多次重新编译后才能正常工作的解决方案很满意。我想要制作的依赖于此的代码不会改变框的大小。
答案1
此示例使用沃纳的回答针对类似问题来识别列。
更新后续问题:边缘不对称。
% !TeX TS-program = pdflatex
\documentclass[12pt,a4paper,twocolumn]{book}
\usepackage[left=2.00cm, right=4.00cm, top=4.00cm, bottom=3.00cm, marginpar=3cm]{geometry}
\usepackage{showframe}
\usepackage{zref-savepos} % needed <<<<<<<<<<<<<<
\newcounter{columncheck}
\newlength{\ldistance}
\usepackage{kantlipsum}% dummy text <<
\usepackage{graphicx}
%% From https://tex.stackexchange.com/a/543802/161015
\newcommand{\whichcolumn}{%
\hspace*{0.25\textwidth}% center in the column
\setlength{\ldistance}{0.5\paperwidth}
\stepcounter{columncheck}%
\zsaveposx{\thecolumncheck}% \zsaveposx{<label>}
\ifdim\ldistance > \zposx{\thecolumncheck}sp % get stored x pos in sp units
LEFT\else RIGHT\fi
}
\pagestyle{plain}
\begin{document}
1. \kant[1]
\begin{figure}[htp!]
\includegraphics[width=\columnwidth]{example-image-a.jpg}\\
\whichcolumn
\end{figure}
2. \kant[3]
\begin{figure}[tp!]
\includegraphics[width=\columnwidth]{example-image-b.jpg}\\
\whichcolumn
\end{figure}
3. \kant[1-3]
\begin{figure}[htp!]
\includegraphics[width=\columnwidth]{example-image-a.jpg}\\\medskip
\whichcolumn
\end{figure}
\begin{figure}[htp!]
\includegraphics[width=\columnwidth]{example-image-b.jpg}\\
\whichcolumn
\end{figure}
\newpage
\begin{figure}[ht!]
\includegraphics[width=\columnwidth]{example-image-c.jpg}\\
\whichcolumn
\end{figure}
4. \kant[1-2]
\end{document}
此代码使用
zref's savepos
模块来存储您要放置命令的列中心的 x 坐标。此 x 坐标用于识别您是在左列还是右列,具体取决于它是否小于或大于(或等于)页面区域的 50%。