我将对问题做出如下定义。
\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.html和https://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
正确的值,而不是一些看似正确的文本宽度的随机百分比。