我需要列印出版商所說的“小明星”(星號)。
我設計了下面的程式碼,但我不確定它是否是一個健全的程式碼,即它不會在以後的其他命令和文字流中引起問題。
這是列印特殊字元(在本例中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
as value 在前後新增空白行。
\usepackage{adjustbox,noindentafter}
\newcommand{\starlet}{%
{%
\par
\addvspace{\baselineskip}%
\centering
\adjustbox{raise=1pt}{\aster}%
\par
\vspace{\baselineskip}%
}%
\NoIndentAfterThis
}
一些筆記
\addvspace
檢查前面是否已經有一些空間,並僅在必要時添加它。在定義的末尾,您可以使用法線,\vspace
因為它之前不會有任何空格。\NoIndentAfterThis
(needsnoindentafter
) 是防止命令後縮排的方法。這必須是組外的。 (看在特定環境後自動 \noindent 的可靠程式碼?)- 如果您想在線居中
\aster
,一種方法是使用\adjustbox{raise=1pt}{\aster}
(needsadjustbox
),另一種方法是\raisbox{1pt}{\aster}
(needsgraphicx
)。 \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“primitive”命令\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}