什么是 \null 以及我们什么时候需要使用它?

什么是 \null 以及我们什么时候需要使用它?

到目前为止,我还不太明白它\null到底是什么,什么时候需要它。我只知道它可以用于创建假设锚点,如下所示。

\documentclass{article}
\usepackage[a6paper,margin=2cm]{geometry}
\parindent=0pt

\begin{document}
\hfill xport \hfill\null\\
\null\hrulefill{} never \hrulefill\par
\hrulefill{} dies. \hrulefill\par
\hfill really? \hfill\null\par


\newpage
\null
\vfill
\hfill The End \hfill\null
\end{document}
  1. 它是什么\null?我们什么时候需要使用它?
  2. 为什么在跟随时\hrulefill需要\hfill开始,但在跟随时不需要?\null\\\null\par
  3. 为什么\hfill总是需要结局\null却不\hrulefill需要呢?

答案1

  1. 它是什么\null?我们什么时候需要使用它?
    \null就是\hbox{}。什么时候需要它?实际上,从来都不需要。

  2. 为什么\hrulefill和跟在 后面时\hfill需要开始,而跟在 后面时不需要?是,所以它不完全像,因为它在 后面添加了一个空字距,但与 非常相似。和之间的区别在于 后面有一个框(缩进框,即使),但 后面的行上没有框,因此粘连消失(引线也消失)。\null\\\null\par
    \hrulefill\leavevmode\leaders\hrule\hfill\kern0pt\hfill\par\hrulefill\\\hrulefill\par\noindent\\

  3. 为什么\hfill总是需要结局\null却不\hrulefill需要结局?
    因为\kern0pt结局的\hrulefill

  4. 为什么第一行\begin{document}不被视为段落回忆,那里\null需要开始\hfill
    你能更精确地说明这一点吗?

答案2

如果没有材料,TeX 在某些情况下会忽略空格。\null与 相同\hbox{},它可以用于不保留空间的材料,但向 TeX 表明有一个用于排版的框。

\documentclass{article}
    
\usepackage[a6paper,margin=2cm]{geometry}

    \parindent=0pt
    
    
\begin{document}
    
\hfill xport \hfill\null
    
    

\hrulefill never \hrulefill
    
    

\hrulefill dies \hrulefill
    
    
\newpage

\null
\vfill
    
\hfill The End \hfill\null
    
\vfill
    
\end{document}

答案3

\null当需要确保模式的正确行为时,实际上很有用\nofrenchspacing,这会使每个句子后的空格更长。默认情况下,如果句子以大写字母结尾,TeX 会认为它是首字母,并且不会实现更长的间距,即使这可能是可取的。为了确保更长的间距,可以\null在结束标点符号之前插入。例如,如果启用该选项,句子In USA we don't usually drink tea with milk, like they do it in the UK\null.在句号后产生的空格将比没有句号时更长。\null\nofrenchspacing

我在 Paul W. Abrahams、Kathryn A. Hargreaves 和 Karl Berry 合著的《TeX for the Impatient》一书中遇到了这种用法,可在此处获得: http://tug.ctan.org/info/impatient/book.pdf

相关内容