
この質問のサブタイトルは、「キャプションを常にオブジェクト フロートの上に表示させる方法」にすることもできました。私は複雑な設定とコマンドのセットを持っており、それをその MWE に反映させることができました。
% !TeX encoding = UTF-8
% !TeX spellcheck = fr_FR
\documentclass[11pt, frenchb, twoside]{report}
% LENGTH
\newlength{\goldenMargin}
\setlength{\goldenMargin}{1.618in}
\newlength{\imageWidth}
\setlength{\imageWidth}{.5\paperwidth}
% IMPORTS
\usepackage{adjustbox}
\usepackage{blindtext}
\usepackage{floatrow}
\usepackage{caption}
\usepackage{ifoddpage}
\usepackage[first=0, last=1, quiet]{lcg}
\usepackage{polyglossia}
\usepackage[paperwidth=8.125in,paperheight=10.25in,
hmargin={.5\goldenMargin,\goldenMargin},vmargin={.5\goldenMargin},
marginparwidth={\dimexpr \goldenMargin - 2\marginparsep}]{geometry}
\usepackage[usenames,dvipsnames,svgnames,rgb]{xcolor}
\usepackage{xparse}
\usepackage{xifthen}
\usepackage{xstring}
% % % % % % % % RIGHTLAST % % % % % % % %
\ProvideDocumentCommand \rightlast{}
{\leftskip0ptplus1fil\rightskip0ptplus-1fil\parfillskip0ptplus1fil}
% GRAPHICS
\graphicspath{{../assets/}}
% FLOATS & CAPTIONS
\floatsetup{heightadjust=all}
\DeclareColorBox{blackplate}{\colorbox{black}}
\DeclareFloatStyle{blackFloat}{style=plain,framestyle=colorbox,
framearound=all,colorframeset=blackplate,frameset={\fboxrule0pt},
framestyle=colorbox,framefit=yes}
\DeclareFloatSeparators{oddCapSep}{\hspace{\dimexpr -\parindent-.5\goldenMargin}}
\DeclareCaptionLabelFormat{oddLabel}{\fbox{\Large\scshape#1~#2}\hspace*{\fill}}
\DeclareCaptionLabelFormat{evenLabel}{\fbox{\Large\scshape#1~#2}}
\DeclareCaptionLabelSeparator{oddSep}{odd}
\DeclareCaptionFormat{innerCapFormat}
{%
\parbox{\dimexpr \paperwidth-\imageWidth-\goldenMargin-\parindent-\columnsep}
{%
\IfStrEq{#2}{l}
{\raggedright#1\hspace*{\fill}\bigbreak#3}
{\rightlast#1\bigbreak#3}
}
}
\DeclareCaptionStyle{innerCapStyle}%
{%
singlelinecheck=off,format=innerCapFormat
}
% % % % % % % % UTILS % % % % % % % %
\ExplSyntaxOn
\tl_new:N \l_foo_tl
\tl_new:N \l_bar_tl
\DeclareExpandableDocumentCommand{\IfNoEmptyTF}{ m m m }
{
\IfNoValueTF{#1}{#2}
{
\tl_if_empty:nTF {#1} {#2} {#3}
}
}
% % % % % % % % BLACKARTWORK % % % % % % % %
% #1 TOC caption
% #2 Caption
% #3 Image Path
\ProvideDocumentCommand \blackArtwork{ m m m }
{
\adjustboxset{bgcolor=black}
% \floatsetup[figure]{style=blackFloat}
\rand\ifthenelse{\equal{\arabic{rand}}{1}}
{\begin{figure}[t!]}{\begin{figure}[b!]}
\captionsetup{style=innerCapStyle,font={sf,color=white}}
\checkoddpage
\ifthenelse{\boolean{oddpage}}
{%
\tl_set:Nn \l_foo_tl {#2\hspace*{\fill}}
\tl_set:Nn \l_bar_tl {l}
% \begin{blackbox}
\adjustboxset{lap=\dimexpr -\parindent - .5\goldenMargin}
\captionsetup{labelsep=oddSep,labelformat=oddLabel,justification=raggedleft}
\floatbox[{\capbeside\thisfloatsetup{capbesideposition={right,center},%
capbesidesep=oddCapSep}}]
}
{%
\tl_set:Nn \l_foo_tl {\hspace*{\fill}#2}
\tl_set:Nn \l_bar_tl {r}
% \begin{blackbox}
\adjustboxset{lap=.5\goldenMargin}
\captionsetup{labelformat=evenLabel}
\floatbox[{\capbeside\thisfloatsetup{capbesideposition={left,center}}}]
}
{figure}
{\caption[#1]{\l_foo_tl}\label{fig:#3}}
{\adjustbox{inner}{\makebox[\paperwidth][\l_bar_tl]{\includegraphics[width=\imageWidth]{#3}}}}
% \end{blackbox}
\end{figure}
\adjustboxset{}
}
\ExplSyntaxOff
\ProvideDocumentEnvironment{blackbox}{}
{\begin{adjustbox}{frame}}
{\end{adjustbox}}
\begin{document}
\blindtext
\blackArtwork{Miguel Chevalier, \textit{Magic Carpets}, 2014}
{Miguel Chevalier, Magic Carpets, 2014. Installation générative et interactive de réalité virtuelle. \O~17.5 m. Festival Internazionale di Andria, Castel del Monte.}
{chevalier_magic-carpets}
\blindtext[3]
\blackArtwork{Zu Doyang, \textit{Mini-mondes oculaires}, 2002--2007}
{Zu Doyang, \textit{Mini-mondes oculaires}, 2002--2007. Épreuve à développement chromogène, 1.23 $\times$ 1.25 m chacune. Association des musées d'art coréen, Séoul}
{doyang_spheres}
\end{document}
blackArtwork
は、図をページの一番上または一番下にランダムにタイプセットします。背景は、調整ボックス\paperwidth
最終的にグラフィックが含まれる幅を囲むようmbox
に枠線が引かれています。2 ページ目にはキャプションがないことがわかります。私の推測では、すべてが左から右にタイプセットされ、オブジェクトの「深さ」(この概念が LaTeX にのみ存在する場合)がそのように指定されていると考えられます。したがって、偶数ページでは、キャプションは画像の前にタイプセットされ、その後、黒い背景に覆われて表示されます。画像とキャプションを、\paperwidth
他の余白のない単色の背景のボックス内に囲むために、さまざまな組み合わせを試しましたが、うまくいきませんでした。
したがって、キャプションを画像の後に強制的にタイプセットする方法があるかもしれませんし、あるいは私がそれを複雑にしていて、これを実現するより良い方法があるかもしれません。
答え1
キャプションの移動は次のfloatrow
ように実行します。キャプションの左の配置を変更して、画像の前ではなく、画像の後ろのバックスペースに配置することができます。パッケージを知らないので、いくつかのケースを見逃している可能性がありますが、ここでは次のように機能します。
\documentclass[11pt, frenchb, twoside]{report}
% LENGTH
\newlength{\goldenMargin}
\setlength{\goldenMargin}{1.618in}
\newlength{\imageWidth}
\setlength{\imageWidth}{.5\paperwidth}
% IMPORTS
\usepackage{adjustbox}
\usepackage{blindtext}
\usepackage{floatrow}
\makeatletter
\renewcommand\flrow@FC@{\global\let\flrow@typ@tmpset\undefined
\FB@frame{\begin@FBBOX
\adj@dim\FBo@wd+\FBo@wadj=\hsize
\settowidth\@tempdimb{\floatcapbesidesep}\advance\hsize\@tempdimb
\advance\hsize\FBc@wd\@parboxrestore\leftmargin\z@\rightmargin\z@
\@@FBabove
\hbox{%
\floatfacing*%
{%
\ifvoid\@floatcapt\else
\kern\FBc@wd
\floatcapbesidesep
\fi
\FBf@raise{\FBo@frame{\FCo@box{\FBw@box\FBc@wd\unvbox\@currbox}}}%%
\ifvoid\@floatcapt\else
\rlap{\kern-\FBc@wd\kern-\columnsep\kern-\wd\@floatcapt
\FCc@box{\FBw@box\FBc@wd\unvbox\@floatcapt\FB@foot}}%
\fi
}%
{\FBf@raise{\FBo@frame{\FCo@box{\FBw@box\FBo@wd\unvbox\@currbox}}}%
\ifvoid\@floatcapt\else
\floatcapbesidesep\FCc@box{\FBw@box\FBc@wd
\unvbox\@floatcapt\FB@foot}\fi
}%
%
}%
\par\@@FBbelow\vskip\z@
\end@FBBOX
\global\setbox\@floatcapt\box\voidb@x}}
\makeatother
\usepackage{caption}
\usepackage{ifoddpage}
\usepackage[first=0, last=1, quiet]{lcg}
\usepackage{polyglossia}
\usepackage[paperwidth=8.125in,paperheight=10.25in,
hmargin={.5\goldenMargin,\goldenMargin},vmargin={.5\goldenMargin},
marginparwidth={\dimexpr \goldenMargin - 2\marginparsep}]{geometry}
\usepackage[usenames,dvipsnames,svgnames,rgb]{xcolor}
\usepackage{xparse}
\usepackage{xifthen}
\usepackage{xstring}
% % % % % % % % RIGHTLAST % % % % % % % %
\ProvideDocumentCommand \rightlast{}
{\leftskip0ptplus1fil\rightskip0ptplus-1fil\parfillskip0ptplus1fil}
% GRAPHICS
\graphicspath{{../assets/}}
% FLOATS & CAPTIONS
\floatsetup{heightadjust=all}
\DeclareColorBox{blackplate}{\colorbox{black}}
\DeclareFloatStyle{blackFloat}{style=plain,framestyle=colorbox,
framearound=all,colorframeset=blackplate,frameset={\fboxrule0pt},
framestyle=colorbox,framefit=yes}
\DeclareFloatSeparators{oddCapSep}{\hspace{\dimexpr -\parindent-.5\goldenMargin}}
\DeclareCaptionLabelFormat{oddLabel}{\fbox{\Large\scshape#1~#2}\hspace*{\fill}}
\DeclareCaptionLabelFormat{evenLabel}{\fbox{\Large\scshape#1~#2}}
\DeclareCaptionLabelSeparator{oddSep}{odd}
\DeclareCaptionFormat{innerCapFormat}
{%
\parbox{\dimexpr \paperwidth-\imageWidth-\goldenMargin-\parindent-\columnsep}
{%
\IfStrEq{#2}{l}
{\raggedright#1\hspace*{\fill}\bigbreak#3}
{\rightlast#1\bigbreak#3}
}
}
\DeclareCaptionStyle{innerCapStyle}%
{%
singlelinecheck=off,format=innerCapFormat
}
% % % % % % % % UTILS % % % % % % % %
\ExplSyntaxOn
\tl_new:N \l_foo_tl
\tl_new:N \l_bar_tl
\DeclareExpandableDocumentCommand{\IfNoEmptyTF}{ m m m }
{
\IfNoValueTF{#1}{#2}
{
\tl_if_empty:nTF {#1} {#2} {#3}
}
}
% % % % % % % % BLACKARTWORK % % % % % % % %
% #1 TOC caption
% #2 Caption
% #3 Image Path
\ProvideDocumentCommand \blackArtwork{ m m m }
{
\adjustboxset{bgcolor=black}
% \floatsetup[figure]{style=blackFloat}
\rand\ifthenelse{\equal{\arabic{rand}}{1}}
{\begin{figure}[t!]}{\begin{figure}[b!]}
\captionsetup{style=innerCapStyle,font={sf,color=white}}
\checkoddpage
\ifthenelse{\boolean{oddpage}}
{%
\tl_set:Nn \l_foo_tl {#2\hspace*{\fill}}
\tl_set:Nn \l_bar_tl {l}
% \begin{blackbox}
\adjustboxset{lap=\dimexpr -\parindent - .5\goldenMargin}
\captionsetup{labelsep=oddSep,labelformat=oddLabel,justification=raggedleft}
\floatbox[{\capbeside\thisfloatsetup{capbesideposition={right,center},%
capbesidesep=oddCapSep}}]
}
{%
\tl_set:Nn \l_foo_tl {\hspace*{\fill}#2}
\tl_set:Nn \l_bar_tl {r}
% \begin{blackbox}
\adjustboxset{lap=.5\goldenMargin}
\captionsetup{labelformat=evenLabel}
\floatbox[{\capbeside\thisfloatsetup{capbesideposition={left,center}}}]
}
{figure}
{\caption[#1]{\l_foo_tl}\label{fig:#3}}
{\adjustbox{inner}{\makebox[\paperwidth][\l_bar_tl]{\includegraphics[width=\imageWidth]{#3}}}}
% \end{blackbox}
\end{figure}
\adjustboxset{}
}
\ExplSyntaxOff
\ProvideDocumentEnvironment{blackbox}{}
{\begin{adjustbox}{frame}}
{\end{adjustbox}}
\begin{document}
\blindtext
\blackArtwork{Miguel Chevalier, \textit{Magic Carpets}, 2014}
{Miguel Chevalier, Magic Carpets, 2014. Installation générative et interactive de réalité virtuelle. \O~17.5 m. Festival Internazionale di Andria, Castel del Monte.}
{example-image}
\blindtext[3]
\blackArtwork{Zu Doyang, \textit{Mini-mondes oculaires}, 2002--2007}
{Zu Doyang, \textit{Mini-mondes oculaires}, 2002--2007. Épreuve à développement chromogène, 1.23 $\times$ 1.25 m chacune. Association des musées d'art coréen, Séoul}
{example-image-a}
\end{document}