括号后换行

括号后换行

考虑以下代码:

\documentclass{article}

\newcommand{\Field}[1]{
    \vspace{2\baselineskip}%

    {%
        \fontsize{12.0pt}{14.4pt} \selectfont%
        \noindent%
        \rule{1.0in}{1.0pt}%

        \noindent%
        #1%
    }%
}

\newcommand{\field}[1]{
    \vspace{2\baselineskip}%

    {%
        \fontsize{12.0pt}{14.4pt} \selectfont%
        \noindent%
        \rule{1.0in}{1.0pt}%

        \noindent%
        #1%

    }%
}

\begin{document}

    \Field{By}

    \hfill

    \field{By}

\end{document}

\Field观察发现和之间的唯一区别\field在于\field的定义中有一个额外的换行符。现在,在编译时, 的规则和 的文本之间有一个明显的额外垂直空间,\field但 的没有\Field。这是为什么呢?

在此处输入图片描述

答案1

这是常见的问题,任何字体更改命令都应在其范围内包含最后一段结束,否则该段落将设置为原来的基线跳过。

\Field字体大小发生变化但段落设置为规范化基线跳过的情况下,大小变化的范围在段落结束之前就结束了。

%请注意,在几行末尾有不需要它们的地方(\noindent%但定义在其他地方有几个虚假的空格字符,我在%%这里标记了。

\newcommand{\field}[1]{%%
    \vspace{2\baselineskip}%

    {%
        \fontsize{12.0pt}{14.4pt}%%
        \selectfont
        \noindent
        \rule{1.0in}{1.0pt}%

        \noindent
        #1%

    }%
}

\par正如芭芭拉所说,在宏定义中使用会更清晰。

相关内容