Я борюсь с LaTeX по этому поводу: я хотел бы иметь в документе twocolumn
маленький Рис. 1 вверху второго столбца и широкий Рис. 2 внизу страницы. Этот MWE иллюстрирует это:
\documentclass[twocolumn]{article}
\usepackage{stfloats}
\usepackage{lipsum}
%\renewcommand{\topfraction}{0.1}
\begin{document}
\global\csname @topnum\endcsname 0
\lipsum[1]
\begin{figure}[t]
\caption{Fig. 1!}
\end{figure}
\begin{figure*}[b]
\caption{Fig. 2!}
\end{figure*}
\lipsum[2-6]
\end{document}
Однако, независимо от того, что я пытаюсь, это, похоже, не работает. Либо Рис. 1 находится в верхней части первой колонки; либо широкий Рис. 2 находится на странице 2. Это, кажется, является следствием
- широкая цифра должна появиться в начале первого столбца, и
- маленькая фигурка не может появиться в первом столбце, в противном случае она окажется в этом столбце.
Есть ли обходной путь? Я знаю, что после позиционирования поплавков нумерацию можно исправить (https://tex.stackexchange.com/a/356902/30810), но сначала нужно правильно расположить.
Обновлять: Если это поможет: моя проблема возникает на последней странице документа.
решение1
Окружение figure*
помещает свое содержимое в начало места, а необязательный аргумент не работает. Вы можете попробовать \InsertBoxC
, вложенный в strip
окружение, из cuted
( sttools
bundle): strip
является своего рода локальной средой с одним столбцом.
\documentclass[twocolumn]{article}
\usepackage{stfloats}
\usepackage[unskipbreak]{cuted}
\usepackage{lipsum}
\usepackage{graphicx, caption}
\input{insbox}
\renewcommand{\topfraction}{0.4}
\begin{document}
\lipsum[1-2]
\begin{figure}[!t]
\centering\includegraphics[scale=0.5]{Nightmare_Fussli}
\caption{Nightmare (\emph{Henry Fuseli})}
\end{figure}
\lipsum[3-4]
%
\begin{strip}
\InsertBoxC{
\includegraphics[scale =0.8]{SanRomano-all}}
\captionof{figure}{The Battle of San Romano (\emph{Paolo Uccello})}
\end{strip}
\lipsum[4-8]
\end{document}
решение2
Я попробовал это. Похоже на ужасный хак, но я могу с этим жить:
\documentclass[twocolumn]{article}
\usepackage{mwe,lipsum}
% Solution:
\usepackage{capt-of}
\newcommand{\figureTwo}[1]{\makebox[0pt][l]{\raisebox{-#1}[0pt][0pt]{\parbox{\textwidth}{
\centering
\includegraphics[scale=0.5]{example-image-16x9}
\captionof{figure}{Caption}
\label{fig:Label}
}}}}
% for Calibration:
\usepackage{stfloats}
\begin{document}
\global\csname @topnum\endcsname 0
\lipsum[1]
\begin{figure}[t]
\caption{Fig. 1!}
\end{figure}
\enlargethispage{-10\baselineskip}
% compare with and without - same thing!
\noindent\figureTwo{10cm}\indent
\lipsum[2-5]
%\end{document}
\cleardoublepage
Calibration:
\begin{figure*}[b]
\centering
\includegraphics[scale=0.5]{example-image-16x9}
\captionof{figure}{Caption}
\end{figure*}
\end{document}
\figureTwo
должен вызываться в начале абзаца в левом столбце. \makebox
обеспечивает нулевую ширину результата (и высоту в одну строку, как кажется); \raisebox
перемещает рисунок вертикально в удобное положение; \parbox
необходим, поскольку \captionof
не работает ни в одном из двух других полей (сравните\captionof в поле). Если бы эту комбинацию можно было упростить, я бы тоже этого хотел :)
Калибровка работает путем компиляции обеих страниц, импорта в Inkscape, измерения вертикальных смещений обеих фигур и 10cm
соответствующей адаптации параметра. Должна быть сделана, когда документ действительно, действительно закончен.