![如何在定义上下文中居中?](https://linux22.com/image/468386/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%AE%9A%E4%B9%89%E4%B8%8A%E4%B8%8B%E6%96%87%E4%B8%AD%E5%B1%85%E4%B8%AD%EF%BC%9F.png)
我想在同一行上定义几个简短的定义,作为定义编号。出于这个目的,最后一个定义中有多少个中心 A 是 B?
MWE 是:
\documentclass{article}
\newtheorem{Definiton}{Definiton}
\begin{document}
\begin{Definiton}
A is B
\end{Definiton}
\begin{Definiton}
\begin{center}
A is B
\end{center}
\end{Definiton}
\begin{Definiton}
\begin{center}
\hfill A is B
\end{center}
\end{Definiton}
\begin{Definiton}
\begin{center}
\hfill A is B ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\end{center}
\end{Definiton}
\end{document}
答案1
答案在很大程度上取决于居中操作应该跨越什么。你想把“A 是 B”居中吗?剩余部分行(即减去字符串“定义 n.”)或在全部的行?下面给出了两种情况的解决方案。请注意,代码使用\hspace*{\fill}
而不是\hfill
。
\documentclass{article}
\usepackage{amsthm,showframe}
\newtheorem{Definition}{Definition}
\begin{document}
\begin{center}
$|$
\end{center}
\begin{Definition}
\hspace*{\fill}
A is B
\hspace*{\fill}
\end{Definition}
\begin{Definition}
\hspace*{\fill}
A is B
\hspace*{\fill}\hphantom{\textup{\textbf{Definition \theDefinition.}}}
\end{Definition}
\begin{center}
$|$
\end{center}
\end{document}
答案2
如果你真的想要妨碍可读性,您可以将其置于可用空间的中心(定义 2),也可以将其绝对置于中心(定义 3)。
仅当您选择第三种方式时才需要该包zref
和。\centerref
此外,应该将showframe
其\markcenter
从生产版本中删除。
就我个人而言,我不会尝试将事物推离其所属的范畴,因此我会坚持定义 1 风格。
\documentclass{article}
\usepackage[savepos]{zref}
\usepackage{showframe}% just for the example
\newtheorem{Definition}{Definition}
\newcounter{centerdef}
\newcommand{\centerdef}[1]{%
\leavevmode
\stepcounter{centerdef}%
\zsaveposx{CENTERDEF\arabic{centerdef}}%
\makebox[\dimeval{\columnwidth+1in-\zposx{CENTERDEF\arabic{centerdef}}sp}]{#1}%
}
% just for the example
\newcommand{\markcenter}{\par{\centering\vrule height8pt\par}}
\begin{document}
\markcenter
\begin{Definition}
A is B
\end{Definition}
\begin{Definition}
\hfill A is B\hspace*{\fill}
\end{Definition}
\begin{Definition}
\centerdef{A is B}
\end{Definition}
\markcenter
\end{document}
注意:添加后第一次运行 LaTeX\centerdef
会产生一个过满的框,但下一次运行就会正常。