¿Mejor forma idiomática de imprimir una "estrella" centrada (asterisco)?

¿Mejor forma idiomática de imprimir una "estrella" centrada (asterisco)?

Necesito imprimir lo que el editor llama "una estrella" (asterisco).

Ideé el código siguiente, pero no estoy seguro de si es un código de sonido, es decir, no causará problemas más adelante, dentro de otros comandos y en el flujo de texto.

¿Es esa la forma idiomática de imprimir un carácter especial (en este caso, mathabx's \varstar), centrado y con 1 línea en blanco arriba y abajo?

Estoy usando \vgridpara comprobar que la alineación vertical se conserva con la mayor precisión posible con respecto a la cuadrícula subyacente.

\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}

Respuesta1

Sugiero usar \centeringen lugar de {center}ya que el primero no agrega espacio vertical y le permite controlar el espaciado exactamente sin la necesidad de modificar correcciones. Para usarlo \centeringsolo para una parte de su documento, enciérrelo en un grupo, es decir {…}, y agregue un \pardespués peroadentroel grupo. Luego use \(add)vspacewith \baselineskipcomo valor para agregar líneas en blanco antes y después.

\usepackage{adjustbox,noindentafter}

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

Algunas notas

  • \addvspaceComprueba si ya hay algo de espacio antes y lo agrega solo cuando es necesario. Al final de la definición puedes usar el normal \vspaceya que no habrá ningún espacio antes.
  • \NoIndentAfterThis(necesidades noindentafter) es la forma de evitar la sangría después del comando. Esto debe ser fuera del grupo. (ver¿Código confiable para \noindent automático después de entornos específicos?)
  • Si desea centrarse \asteren la línea, una forma es usar \adjustbox{raise=1pt}{\aster}(needs adjustbox) u otra forma es \raisbox{1pt}{\aster}(needs graphicx).
  • El \makeatletter/otherpar no es necesario aquí ya que no se utilizan comandos que contengan @como parte de su nombre.

Para centrar una sola línea (cuadro) también se puede usar \hspacewith \fillcomo valor:

\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
}

Respuesta2

(Respuesta actualizada para incorporar el hecho de que \varstarse requiere el uso de , en lugar de algún símbolo de asterisco arbitrario).

Supongo que una forma idiomática de LaTeXy de crear una línea de altura en blanco \baselineskipes escribir \par\null\par. Para centrar un símbolo determinado, se podría utilizar el comando "primitivo" de TeX \centerline. En el código siguiente, el comando \starletintercala la instrucción \centerline{$\varstar$}entre dos conjuntos de \par\null\parinstrucciones. La altura total de la salida generada por \starletes exactamente 3\baselineskip, preservando automáticamente cualquier alineación de cuadrícula que pueda estar en su lugar.

ingrese la descripción de la imagen aquí

\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}

información relacionada