我需要印刷出版商所说的“明星”(星号)。
我设计了下面的代码,但我不确定它是否是声音代码,即它不会在以后在其他命令和文本流中引起问题。
这是打印特殊字符(在本例中为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)vspace
with\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
命令,因此这里不需要该对。@
要使单行(框)居中,也可以使用\hspace
with\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}