\vspace*遇到换页距离不够导致奇怪间距?如何实现可跨页的\vspace?

发布于 2025-07-25 16:28:25

这是我的MWE:

\documentclass[twocolumn,12pt]{ctexart}
\usepackage{showframe}
\usepackage[type=lowerleft]{fgruler}
\usepackage[paperwidth=42cm,paperheight=29.7cm,top=3cm,bottom=1cm,left=1.7cm,right=1.7cm,bindingoffset=0.5cm]{geometry}
\setlength{\columnsep}{35pt}%设置两栏之间的间距
\raggedbottom
\begin{document}
        (1) *********************  
        \vspace*{8cm}

        (2) ********************* 
        \vspace*{8cm}
        
        (3) 已知齐次线性方程组  
        \[
        *******************
        \]  
        同解,求 $a,b,c$ 的值. \par
        \vspace*{8cm}
        
        (4) 已知齐次线性方程组 
\end{document}

这将得到

image.png

预期目标效果是
image.png

查看更多

关注者
0
被浏览
75
1 个回答
Sagittarius Rover
Sagittarius Rover 21小时前
我要成为Typst糕手/(ㄒoㄒ)/~~

需求(a) 不希望「同解,求值」出现在第二栏,改用\vspace而不是\vspace*即可:

\documentclass[twocolumn,12pt]{ctexart}
\usepackage{showframe}
\usepackage[type=lowerleft]{fgruler}
\usepackage[paperwidth=42cm,paperheight=29.7cm,top=3cm,bottom=1cm,left=1.7cm,right=1.7cm,bindingoffset=0.5cm]{geometry}
\setlength{\columnsep}{35pt}%设置两栏之间的间距
\raggedbottom
\begin{document}
        (1) *********************  
        \vspace*{8cm}

        (2) ********************* 
        \vspace*{8cm}
        
        (3) 已知齐次线性方程组  
        \[
        *******************
        \]  
        同解,求 $a,b,c$ 的值.
        \vspace{8cm}
        
        (4) 已知齐次线性方程组 
\end{document}

image.png

需求(b) 希望得到可跨行的\vspace:

参考链接: https://tex.stackexchange.com/questions/601243/vspace-at-the-end-of-a-page

方法一:

\documentclass[twocolumn,12pt]{ctexart}
\usepackage{showframe}
\usepackage[type=lowerleft]{fgruler}
\usepackage[paperwidth=42cm,paperheight=29.7cm,top=3cm,bottom=1cm,left=1.7cm,right=1.7cm,bindingoffset=0.5cm]{geometry}
\setlength{\columnsep}{35pt}%设置两栏之间的间距
\raggedbottom
% % https://tex.stackexchange.com/a/601258/322482
\usepackage{forloop}
\newcounter{vspaceinc}
\newcommand\xvspace[2]{\par\leavevmode%
  \forloop{vspaceinc}{0}{\thevspaceinc<#1}{%
  \vspace{\dimexpr1#2-\baselineskip-\parskip}\leavevmode\par}%
}
\begin{document}
        (1) *********************  
        \vspace*{8cm}

        (2) ********************* 
        \vspace*{8cm}
        
        (3) 已知齐次线性方程组  
        \[
        *******************
        \]  
        同解,求 $a,b,c$ 的值.
        \xvspace{12}{cm}
        
        (4) 已知齐次线性方程组 
\end{document}

方法二:

\documentclass[twocolumn,12pt]{ctexart}
\usepackage{showframe}
\usepackage[type=lowerleft]{fgruler}
\usepackage[paperwidth=42cm,paperheight=29.7cm,top=3cm,bottom=1cm,left=1.7cm,right=1.7cm,bindingoffset=0.5cm]{geometry}
\setlength{\columnsep}{35pt}%设置两栏之间的间距
\raggedbottom
% https://tex.stackexchange.com/a/601262/322482
\newlength{\gapinsert}
\newcommand{\insertgap}[1]{%
  \par
  \ifdim\dimexpr\pagegoal-\pagetotal<#1
    % Capture space remaining after page break
    \setlength{\gapinsert}{\dimexpr#1-\pagegoal+\pagetotal}%
    \pagebreak% Insert page break
    \vspace*{\gapinsert}% Insert additional/remaining gap; https://tex.stackexchange.com/q/33370/5764
  \else
    % Enough space available on page
    \vspace{#1}% Insert regular vspace
  \fi
}
\begin{document}
        (1) *********************  
        \vspace*{8cm}

        (2) ********************* 
        \vspace*{8cm}
        
        (3) 已知齐次线性方程组  
        \[
        *******************
        \]  
        同解,求 $a,b,c$ 的值.
        \insertgap{12cm}
        
        (4) 已知齐次线性方程组 
\end{document}

image.png

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览