打印居中的“小星星”(星号)的更好的惯用方法?

打印居中的“小星星”(星号)的更好的惯用方法?

我需要印刷出版商所说的“明星”(星号)。

我设计了下面的代码,但我不确定它是否是声音代码,即它不会在以后在其他命令和文本流中引起问题。

这是打印特殊字符(在本例中为mathabx's \varstar)的惯用方法吗?该字符居中且上下各有 1 个空行?

我使用\vgrid它来检查垂直对齐是否尽可能精确地保留相对于底层网格。

\documentclass[
DIV=calc,
twoside,
openright,
twocolumn=false,
titlepage,
numbers=noenddot,
headinclude=true,
footinclude=true,
]{scrbook}

\usepackage{kantlipsum}
\usepackage{mathabx}
\newcommand{\aster}{$\varstar$} 

\usepackage{vgrid}

\makeatletter
\newcommand{\starlet}{% 
  \par
  \vskip -0.5pt
  \noindent
  \parbox{\linewidth}{
    \begin{center}
      \aster
    \end{center}
  }
  \par
  \vskip 0.6pt % make it fit the grid
  \noindent
}
\makeatother

\begin{document}
\kant[1]
\starlet
\kant[1]
\end{document}

答案1

我建议使用\centering而不是{center}因为前者不添加垂直空间,让你可以精确控制间距,而无需摆弄更正。如果\centering只用于文档的一部分,请将其括在一个组中,即,并在其后{…}添加一个但\par里面组。然后使用\(add)vspacewith\baselineskip作为值在前后添加空行。

\usepackage{adjustbox,noindentafter}

\newcommand{\starlet}{%
  {% 
    \par
    \addvspace{\baselineskip}%
    \centering
    \adjustbox{raise=1pt}{\aster}%
    \par
    \vspace{\baselineskip}%
  }%
  \NoIndentAfterThis
}

一些注释

  • \addvspace检查前面是否已经有空格,并只在必要时添加。在定义的末尾,您可以使用常规方法,\vspace因为前面没有任何空格。
  • \NoIndentAfterThis(需要noindentafter)是防止命令后缩进的方法。这必须在组之外。(见特定环境后自动 \noindent 的可靠代码?
  • 如果要使\aster线条居中,一种方法是使用\adjustbox{raise=1pt}{\aster}(需要adjustbox)或者另一种方法是\raisbox{1pt}{\aster}(需要graphicx)。
  • 由于您不使用包含作为其名称一部分的\makeatletter/other命令,因此这里不需要该对。@

要使单行(框)居中,也可以使用\hspacewith\fill作为值:

\newcommand{\starletII}{%
  \par
  \addvspace{\baselineskip}%
  \hspace*{\fill}% without the star space would be ignored it it
         % begins/ends a line
  \adjustbox{raise=1pt}{$\star$}%
  \hspace*{\fill}
  \par
  \vspace{\baselineskip}%
  \NoIndentAfterThis
}

答案2

(答案已更新,以纳入以下事实:\varstar需要使用,而不是某些任意的星号。)

我认为创建高度为 的空白行的惯用 LaTeXy 方法\baselineskip是键入\par\null\par。要将给定符号居中,可以使用 TeX“原始”命令\centerline。在下面的代码中,命令\starlet将指令夹\centerline{$\varstar$}在两组\par\null\par指令之间。生成的输出的总高度\starlet恰好为3\baselineskip,自动保留可能存在的任何网格对齐。

在此处输入图片描述

\documentclass[twocolumn]{article}
\usepackage{mathabx}  % for \varstar symbol

\newcommand\starlet{%
  \par\null\par%  a blank line of height \baselineskip
  \centerline{$\varstar$}%  center-set the ask
  \par\null\par}% another blank line of height \baselineskip

%% Just for this example:
  \setlength\parindent{0pt} 
  \usepackage[textwidth=2.95in,showframe]{geometry}

\begin{document}
Some meaningless fluff.

Some meaningless fluff.

Some meaningless fluff.

Some meaningless fluff.

Some meaningless fluff.

\newpage  % induce a column break
Some meaningless fluff.

\starlet

Some meaningless fluff.
\end{document}

相关内容