使用 sidecaption 和 memoir 类时删除图形下方文本前的空白

使用 sidecaption 和 memoir 类时删除图形下方文本前的空白

如您所见,在回忆录类中使用 sidecaption 时,边缘中的文本控制表格下方的文本位置。

在此处输入图片描述

是否可以删除表格子标题下的所有空白?

哦,您认为是否可以将表格置于侧标题的中心?

这里是 Mwe

% !TEX encoding =  UTF-8 Unicode
% -*- program: xelatex -*-
\documentclass[a4paper, 11pt,twoside, openright]{memoir}
\usepackage{mwe} % just for dummy images
\usepackage{amssymb}
\usepackage{amsmath,mathtools}
\usepackage{amstext}    % defines the \text command, needed here
\usepackage{array}
\usepackage{showframe}
\usepackage{tikz}

\usepackage{graphicx}

%%%%%%%%%%%%%%%%%%
% SIDE CAPTION 
\newsubfloat{figure}{}
\newsubfloat{table}{}

\sidecapmargin{outer}
\setsidecappos{t}

\captiontitlefont{\normalfont}% title font
\precaption{\raggedright}% for Caption N
\captiondelim{\newline}% newline*
\captionstyle{\raggedright}% for title
\setlength{\belowcaptionskip}{\onelineskip}

\usepackage{ragged2e}

\renewcommand*{\sidecapstyle}{%
 \ifscapmargleft
    \captionstyle{\justifying\scriptsize}%
  \else
    \captionstyle{\justifying\scriptsize}%
  \fi}

%%%%%%%%%%%%%%%%%%$

%%%%%%%%%%%%%%%%%%
% SUB CAPTION 
% http://tex.stackexchange.com/questions/49448/controlling-the-subcaption-space-in-memoir
\loosesubcaptions
%%%%%%%%%%%%%%%%%%

\begin{document}

\begin{table}
    \centering
    \begin{sidecaption}[fortoc]{Application des règles de dominance aux points $e$ et $f$. \\ \\
           \begin{tabular}{>{$}l<{$}>{$}l<{$} >{$}l<{$}}
                    \toprule
                     & f1 & f2 \\
                    \midrule
                    e      & 0.5    &  4   \\
                    f      & 0.5    & 5,5  \\
                    \bottomrule
            \end{tabular}\\ \\ 
            (a) $e \prec f$ car e est bien le meilleur sur au moins un des deux objectifs, et n'est pas pire sur aucuns des autres objectifs ($e \preceq f$ \\ )
            (b) f ne domine pas e car f n'est pas meilleur sur aucun des deux objectifs et il est pire sur au moins un des deux objectif}[tab:pranking]

        \begin{minipage}{0.5\textwidth}
            \centering
            \subbottom[e est faiblement dominé par f ?]{
                \begin{tabular}{>{$}l<{$}>{$}l<{$} >{$}l<{$}}
                    \toprule
                        & f1 & f2 \\
                    \midrule
                    e \leq f & \text{true} & \text{true} \\
                    e < f   & \text{false}  & \text{true} \\
                    \bottomrule
                \end{tabular}
            \label{subfig_xyespaceSolutionCandidate:a}}
         \end{minipage}\hspace{1em}
         \begin{minipage}{0.5\textwidth}
            \centering
            \subbottom[f est faiblement dominé par e ?]{
                \begin{tabular}{>{$}l<{$}>{$}l<{$} >{$}l<{$}}
                    \toprule
                      & f1 & f2 \\
                    \midrule
                    f \leq  e & \text{true} & \text{false} \\
                    f < e  & \text{false}  & \text{false} \\
                    \bottomrule
                \end{tabular}
            \label{subfig_xyespaceSolutionCandidate:a}}
        \end{minipage}
  \end{sidecaption}
\end{table}

Les solutions admise parmis le front de pareto (voir figure \ref{fig:frontoptimal}) sont donc ici tout ceux qui ne sont pas dominé faiblement ($\preceq$), ce qui revient à exclure les points $f$ et $l$ du front optimum $\{a,b,c,d,e\}$ car ils sont dominés faiblement ($e \preceq f$); alors que dans le cadre d'une dominance forte ($\prec \prec$), ceux-ci aurait fait partie du front $\{a,b,c,d,e,f,l\}$. En effet si on prend toujours le cas de $e$ et $f$, la condition testant que $e$ est strictement meilleur que $f$ sur tout les objectif n'est pas rempli. %Cet ensemble de cardinalité forcément inférieure ou égale est qualifié \enquote{d'ensemble fort non dominé} (\textit{Strongly non dominated set}).

\end{document}

答案1

一个更好的黑客可能是使用

\makeatletter
\renewcommand*{\m@mscapopboxes}{%
  \m@mcalcscapraise%
  \usebox{\m@mscap@fbox}%\m@mscapcheckside
  \ifscapmargleft%
  \rlap{\kern-\m@mscaplkern%
    \raisebox{\m@mscapraise}{\smash[b]{\usebox{\m@mscap@capbox}}}%
  }%
  \else%
    \rlap{\kern\sidecapsep%
      \raisebox{\m@mscapraise}{\smash[b]{\usebox{\m@mscap@capbox}}}%
    }%
  \fi%
  \gdef\m@mscapthisside{}%
  \@mem@scap@afterhook%
}
\makeatother

我添加了\smash[b]。基本上 sidecaption 假设字幕是短的最后制作出两个相邻的框,一个框显示图形,另一个框突出到边距中。它不会试图隐藏边距中的内容的大小。

答案2

快速而肮脏的技巧,将以下内容添加到您的序言中:

\makeatletter
\renewcommand{\endsidecaption}{\m@mscapend@fbox\refstepcounter\@captype\m@mscaplabel%
    \begin{lrbox}{\m@mscap@capbox}%
        \raisebox{0pt}[\height][0pt]{% This line is added, to remove the depth of the box
        \begin{minipage}[c]{\sidecapwidth}%
          \sidecapstyle\@caption\@captype[\m@mscap@fortoc]{\m@mscap@forcap}%
        \end{minipage}%
        }%
    \end{lrbox}\m@mscapopboxes}
\makeatother

相关内容