Preciso imprimir o que a editora chama de “estrelinha” (asterisco).
Elaborei o código abaixo, mas não tenho certeza se é um código sonoro, ou seja, não causará problemas posteriormente, dentro de outros comandos e no fluxo de texto.
Essa é a forma idiomática de imprimir um caractere especial (neste caso, mathabx
's \varstar
), centralizado e com 1 linha em branco acima e abaixo?
Estou usando \vgrid
para verificar se o alinhamento vertical está preservado com a maior precisão possível, em relação à grade subjacente.
\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}
Responder1
Sugiro usar \centering
em vez de, {center}
já que o primeiro não adiciona espaço vertical e permite controlar exatamente o espaçamento, sem a necessidade de mexer nas correções. Para usar \centering
apenas uma parte do seu documento, coloque-o em um grupo, ou seja {…}
, e adicione um \par
depois dele, masdentroo grupo. Em seguida, use \(add)vspace
with \baselineskip
as valor para adicionar linhas em branco antes e depois.
\usepackage{adjustbox,noindentafter}
\newcommand{\starlet}{%
{%
\par
\addvspace{\baselineskip}%
\centering
\adjustbox{raise=1pt}{\aster}%
\par
\vspace{\baselineskip}%
}%
\NoIndentAfterThis
}
Algumas notas
\addvspace
verifica se já existe algum espaço antes e adiciona-o somente quando necessário. No final da definição você pode usar o normal,\vspace
pois não haverá espaço antes dele.\NoIndentAfterThis
(needsnoindentafter
) é a maneira de evitar o recuo após o comando. Isso deve estar fora do grupo. (verCódigo confiável para \noindent automático após ambientes específicos?)- Se você quiser centralizar
\aster
na linha, uma maneira é usar\adjustbox{raise=1pt}{\aster}
(needsadjustbox
) ou outra maneira é\raisbox{1pt}{\aster}
(needsgraphicx
). - O
\makeatletter/other
par não é necessário aqui, pois você não usa comandos contendo@
como parte de seu nome.
Para centralizar uma única linha (caixa), também se pode usar \hspace
with \fill
como 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
}
Responder2
(Resposta atualizada para incorporar o fato de que \varstar
é necessário o uso de , em vez de algum símbolo de asterisco arbitrário.)
Suponho que uma maneira idiomática do LaTeXy de criar uma linha de altura em branco \baselineskip
seja digitar \par\null\par
. Para centralizar um determinado símbolo, pode-se usar o comando "primitivo" do TeX \centerline
. No código abaixo, o comando \starlet
coloca a instrução \centerline{$\varstar$}
entre dois conjuntos de \par\null\par
instruções. A altura total da saída gerada por \starlet
é exatamente 3\baselineskip
, preservando automaticamente qualquer alinhamento de grade que possa estar no lugar.
\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}