如何将文本和图像标题之间的间距设置为“\baselineskip”?

如何将文本和图像标题之间的间距设置为“\baselineskip”?

我尝试在下面的代码中设置所有内容\baselineskip,但文本和图像之间的空间与文本的其余部分不匹配。

\documentclass[14paper,12pt]{article}
\usepackage{graphicx,lipsum,caption,csquotes,setspace}

\makeatletter
\setstretch{1.5}
\setlength{\intextsep}{\baselineskip}
\setlength{\floatsep}{\baselineskip}
\setlength{\textfloatsep}{\baselineskip}
\setlength{\abovecaptionskip}{0pt}
\setlength{\belowcaptionskip}{0pt}
\setlength{\abovedisplayskip}{\baselineskip}
\setlength{\belowdisplayskip}{\baselineskip}
\setlength{\abovedisplayshortskip}{\baselineskip}
\setlength{\belowdisplayshortskip}{\baselineskip}
\setlength{\jot}{\baselineskip}

\renewcommand\section{
  \@startsection {section}{1}{\z@}
  {-\baselineskip}
  {\baselineskip}
  {\normalfont\normalsize\bfseries}
 }
\makeatother

\begin{document}
\section{ALSDJKFH  ALSKDJFH}
ALSDJKFH  ALSKDJFH LASKJDHF ALSKDJFHALSDKJFHA SLDKJFHALSKDJFHALSKDJFH ALSKDJF ALKSJDHF ALSJDKFHALKJSD FLAKJSD FLKJAHSDF LKJAHSD FLJKAHSDF LKJAHSD FLKJAHSD FLKJAHSDFLKJAHSD LFKJHKLAJSDHFLAKJ SDHFL AKSJDHF LAKJSDHF ALKDJSFH 
\begin{figure}[!htb]
    \centering
        \caption*{ALSDJKFH  ALSKDJFH}
        \includegraphics[width=.6\textwidth]{example-image}
        \caption*{ALSDJKFH  ALSKDJFH}
\end{figure}
ALSDJKFH  ALSKDJFH LASKJDHF ALSKDJFHALSDKJFHA SLDKJFHALSKDJFHALSKDJFH ALSKDJF ALKSJDHF ALSJDKFHALKJSD FLAKJSD FLKJAHSDF LKJAHSD FLJKAHSDF LKJAHSD FLKJAHSD FLKJAHSDFLKJAHSD LFKJHKLAJSDHFLAKJ SDHFL AKSJDHF LAKJSDHF ALKDJSFH 
\end{document}

下图中,所有绿色矩形的高度都相同。但图片标题上方的间距小于 1 \baselineskip(黄色矩形),下方的间距大于 1 \baselineskip(红色矩形)。但对于我的大学模板,所有内容的间距都应该相同。如何解决这个问题?

在此处输入图片描述

答案1

免责声明:这只是部分答案,因为有些空格仍然不正确。将其作为答案,因为它有点长,我无法评论。

首先,您绘制的块大于\baselineskip。A\baselineskip是两个基线之间的长度。因此,部分标题后的间距似乎大于\baselineskip。我建议查看包\titlespacing中的命令titlesec

其次,该caption包会猜测标题和图像的相对位置,以添加正确的间距。在这种情况下,它认为标题出现在图像上方,因此第二个标题的间距不正确。如果删除顶部标题,则不会发生这种情况。(也就是说,提供的示例实际上通过向单个图添加两个标题来创建错误场景。)

caption最后,当一起使用和包时setspace,您需要单独设置标题的字体拉伸(如下所示font=stretch={1.5})。请参考文档了解caption详情。

以下是部分修复的版本及其输出:

\documentclass[a4paper,12pt]{article}
\usepackage{graphicx}
\usepackage[font={stretch=1.5}]{caption}
\usepackage{setspace}
\makeatletter
\setstretch{1.5}
\setlength{\intextsep}{\baselineskip}
\setlength{\floatsep}{\baselineskip}
\setlength{\textfloatsep}{\baselineskip}
\setlength{\abovecaptionskip}{0pt}
\setlength{\belowcaptionskip}{0pt}
\setlength{\abovedisplayskip}{\baselineskip}
\setlength{\belowdisplayskip}{\baselineskip}
\setlength{\abovedisplayshortskip}{\baselineskip}
\setlength{\belowdisplayshortskip}{\baselineskip}
\setlength{\jot}{\baselineskip}

\renewcommand\section{
  \@startsection {section}{1}{\z@}
  {-\baselineskip}
  {\baselineskip}
  {\normalfont\normalsize\bfseries}
 }
\makeatother

\begin{document}
\section{ALSDJKFH  ALSKDJFH}
ALSDJKFH ALSKDJFH LASKJDHF ALSKDJFHALSDKJFHA SLDKJFHALSKDJFHALSKDJFH ALSKDJF ALKSJDHF ALSJDKFHALKJSD FLAKJSD FLKJ
\begin{figure}[!htb]
    \centering
        \caption*{ALSDJKFH  ALSKDJFH}
        \includegraphics[width=.4\textwidth]{example-image}
        % \caption*{ALSDJKFH  ALSKDJFH}
\end{figure}
ALSDJKFH ALSKDJFH LASKJDHF ALSKDJFHALSDKJFHA SLDKJFHALSKDJFHALSKDJFH ALSKDJF ALKSJDHF ALSJDKFHALKJSD FLKJHKL
\begin{figure}[!htb]
    \centering
        % \caption*{ALSDJKFH  ALSKDJFH}
        \includegraphics[width=.4\textwidth]{example-image}
        \caption*{ALSDJKFH  ALSKDJFH}
\end{figure}
ALSDJKFH ALSKDJFH LASKJDHF ALSKDJFHALSDKJFHA SLDKJFHALSKDJFHALSKDJFH ALSKDJF ALKSJDHF ALSJDKFHALKJSD FLAKJSD FLKJ
\end{document}

输出

希望这能让您更接近期望的输出。

相关内容