我正在尝试创建一个简单的新命令,在文本中创建一个中断,以在“问答”块的前面和后面添加一条水平线。
使用现有代码(如下所列),底部水平线不会显示。
\newcommand{\QandA}[2]{
\hrulefill \\
\textbf{Q: }{#1} \\
\textbf{A: }{#2} \\
\hrulefill}
答案1
没有像 这样的大锤tabularx
;重要的是避免\hrulefill
在行首使用,因为粘连会在换行时消失。第一个是在缩进框之后或段落开头,就像我的答案中那样,但它不会在那里消失。对于第二个,我们需要一些不会在换行时消失的东西。比如\mbox{}
。
\documentclass{article}
\newcommand{\QandA}[2]{%
\par\noindent\hrulefill\\*
\textbf{Q: }#1\\*
\textbf{A: }#2\\*[-1.25ex]
\mbox{}\hrulefill\par
}
\begin{document}
Some text before.
\QandA{One}{Two}
Some text after.
\end{document}
使用*
是为了避免分页。
答案2
你需要在行首有一个“标记”,以便领导者 \hrulefill
从...延伸。尝试使用\mbox{}\hrulefill
结尾规则。但是...
以下将提供一个牢不可破的盒子(以 的形式tabular
),用于插入您的问答:
\documentclass{article}
\usepackage{tabularx}
\newcommand{\QandA}[2]{%
\par\noindent
\begin{tabularx}{\linewidth}{@{}lX@{}}
\hline
\textbf{Q:}& #1 \\
\textbf{A:}& #2 \\
\hline
\end{tabularx}
\par}
\begin{document}
Some text before.
\QandA{One}{Two}
Some text after.
\end{document}