没有 Vspace 的 fbox

没有 Vspace 的 fbox

我将对问题做出如下定义。

\newcommand{\defproblem}[3]{
    \vspace{4mm}
    \noindent\fbox{
        \parbox{0.98\textwidth}{
             #1 \\
             \textbf{Input}: #2 \\
             \textbf{Output}: #3
         }
    }
    \vspace{4mm}
}

这是使用该命令的一个示例。 在此处输入图片描述

但有些期刊要求尽量不要使用\vspace之类的命令。

如果我直接删除 \vspace,它看起来像 在此处输入图片描述 我们可以看到fbox的前面和后面都没有空间(高度为4mm)。

有没有不使用 \vspace 就能达到相同效果的方法?

是否可以将 fbox 放入另一个盒子(或 minipage)并设置该盒子(或 minipage)的参数?

答案1

使用,在问题定义之前和之后都添加了\begin{trivlist}\item[] ... \end{trivlist}垂直分隔。参见\topsep [+ \parskip]https://latexref.xyz/trivlist.htmlhttps://latexref.xyz/list.html了解更多信息。

\documentclass{article}
\usepackage{lipsum}

\newcommand{\defproblem}[3]{%
    \begin{trivlist}\item[]
    \fbox{%
        \parbox{0.98\textwidth}{%
             #1 \\
             \textbf{Input}: #2 \\
             \textbf{Output}: #3
         }%
    }%
    \end{trivlist}%
}

\begin{document}
\lipsum[1][1-3]
\defproblem{a}{b}{c}
\lipsum[1][1-3]
\end{document}

在此处输入图片描述

答案2

他们不希望人们\vspace在文档内部使用,但对于结构来说,这肯定是必要的,不能被禁止。

\documentclass{article}
\usepackage{lipsum}

\newcommand{\defproblem}[3]{%
  \par\addvspace{\topsep}
  \noindent\fbox{%
    \parbox{\dimexpr\textwidth-2\fboxsep-2\fboxrule}{
      #1 \\
      \textbf{Input}: #2 \\
      \textbf{Output}: #3
    }%
  }%
  \par\addvspace{\topsep}
}

\begin{document}

\lipsum[1][1-5]

\defproblem{x}{y}{z}

\lipsum[2][1-3]

\end{document}

我将其改为\addvspace,不仅因为它不是\vspace,还因为它与\addvspace旁边的其他命令配合并仅使用最高值。

还要注意,我%在行尾添加了一些内容,但主要是将宽度改为\parbox正确的值,而不是一些看似正确的文本宽度的随机百分比。

在此处输入图片描述

相关内容