 图片上方距离文字就是6pt,但是图片下方距离文字为6pt+\baselineskip-\f@size!!!!
解答:还有一个叫 \nointerlineskip 的东西。就让我们具体来看看问题中提到的浮动体前后距离不一致:
图片上方距离文字就是6pt,但是图片下方距离文字为6pt+\baselineskip-\f@size!!!!
解答:还有一个叫 \nointerlineskip 的东西。就让我们具体来看看问题中提到的浮动体前后距离不一致:
\documentclass{article}
\usepackage{graphicx}
\setlength\intextsep{0pt}
\begin{document}
\noindent\rule{\linewidth}{1pt}
\begin{figure}[htbp]
\centering
\includegraphics[width=.5\linewidth]{example-image.pdf}
\caption{example-image}
\end{figure}
\noindent\rule{\linewidth}{1pt}
\end{document} 可以看到,浮动体底部与正文确实有一定的距离,不是我们设置的 0pt。这个距离是 TeX 插入行间 glue 产生的,按通常做法,在浮动体下方的文字之前设置 \nointerlineskip 加以抑制就可以:
可以看到,浮动体底部与正文确实有一定的距离,不是我们设置的 0pt。这个距离是 TeX 插入行间 glue 产生的,按通常做法,在浮动体下方的文字之前设置 \nointerlineskip 加以抑制就可以:
\documentclass{article}
\usepackage{graphicx}
\setlength\intextsep{0pt}
\begin{document}
\noindent\rule{\linewidth}{1pt}
\begin{figure}[htbp]
\centering
\includegraphics[width=.5\linewidth]{example-image.pdf}
\caption{example-image}
\end{figure}
\nointerlineskip
\noindent\rule{\linewidth}{1pt}
\end{document} 但是,既然是浮动体,就很有可能会被浮动到别的地方去,主要的困难是具体要在哪里加 \nointerlineskip。好在 LaTeX3 项目小组的领导 Frank Mittelbach 给出了详细的解释和解决办法 [1]:
但是,既然是浮动体,就很有可能会被浮动到别的地方去,主要的困难是具体要在哪里加 \nointerlineskip。好在 LaTeX3 项目小组的领导 Frank Mittelbach 给出了详细的解释和解决办法 [1]:
作者:李清
链接:https://www.zhihu.com/question/46618031/answer/102310514
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
\documentclass{article}
\usepackage{graphicx}
\setlength\intextsep{0pt}
\usepackage{etoolbox}
\makeatletter
%% http://tex.stackexchange.com/a/40363
\patchcmd{\@addtocurcol}%
  {\vskip \intextsep}%
  {\edef\save@first@penalty{\the\lastpenalty}\unpenalty
   \ifnum \lastpenalty = \@M  % hopefully the OR penalty
     \unpenalty
   \else
     \penalty \save@first@penalty \relax % put it back
   \fi
   \ifnum\outputpenalty <-\@Mii
     \addvspace\intextsep
     \vskip\parskip
   \else
     \addvspace\intextsep
   \fi}%
  {\typeout{*** SUCCESS ***}}{\typeout{*** FAIL ***}}
\patchcmd{\@addtocurcol}%
  {\vskip\intextsep \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi}%
  {\ifnum\outputpenalty <-\@Mii
     \aftergroup\vskip\aftergroup\intextsep
     \aftergroup\nointerlineskip
   \else
     \vskip\intextsep
   \fi}%
  {\typeout{*** SUCCESS ***}}{\typeout{*** FAIL ***}}
\patchcmd{\@getpen}{\@M}{\@Mi}
  {\typeout{*** SUCCESS ***}}{\typeout{*** FAIL ***}}
\makeatother
\begin{document}
\noindent\rule{\linewidth}{1pt}
\begin{figure}[htbp]
\centering
\includegraphics[width=.5\linewidth]{example-image.pdf}
\caption{example-image}
\end{figure}
\noindent\rule{\linewidth}{1pt}
\end{document}如上代码选自:http://tex.stackexchange.com/questions/39867/intextsep-gives-doubled-space/40363#40363选自:https://www.zhihu.com/question/46618031/answer/102310514
 
                 
                

发表评论 取消回复