使超出边缘的长线居中。

使超出边缘的长线居中。

我正在尝试将一长行文本转换为 TeX 格式:

\exists C\forall f(f\in C\Leftrightarrow f\in\ms{F}\wedge (\forall x\forall y)((x\in\dom f\wedge y\in\dom f\Rightarrow x=y)\wedge(\forall z)(z\in\dom f\Rightarrow \op{z}{z}\in f))).

问题是,当我构建时,行会稍微溢出到右边距。我不太介意,因为整行都合适,但是否可以将行居中,以便均匀地溢出到左右边距?我真的不想将此公式分成两行。

如果有帮助的话,我的序言是:

\documentclass[11pt]{article}
\input{other/packages.tex}
\input{other/theoremdef.tex}

其中 packages.tex 是

\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{amscd}
\usepackage{url}
\usepackage[top=1.3in, bottom=1.3in, left=1.3in, right=1.3in]{geometry}

% header and footer
\pagestyle{headings}

\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{stackrel}
\usepackage{mathrsfs}
\usepackage{verbatim}
\usepackage{enumerate}
\usepackage{hyperref}
\usepackage{xy}
\input xy
\xyoption{all}

theoremdef.tex 是:

\newtheorem{exercise}{\bf Exercise}
\newcommand{\dom}{\text{dom}\ }
\newcommand{\ran}{\text{ran}\ }
\newcommand{\fld}{\text{fld}\ }
\newcommand{\op}[2]{\langle #1,#2\rangle}
\newcommand{\ot}[3]{\langle #1,#2,#3\rangle}
\newcommand{\ms}[1]{\mathscr{#1}}

谢谢。

答案1

要调整长线的大小,您可能需要这样做:

\newbox\formBox

\def\forMULA#1{%
  \setbox\formBox=\hbox{#1}%
    \centerline{%
      \ifdim\wd\formBox>\linewidth%
        \resizebox{\linewidth}{!}{#1}%
      \else%
        #1%
      \fi}}

\forMULA{$\exists C\forall f(f\in C\Leftrightarrow f\in\ms{F}\wedge (\forall x\forall y)((x\in\dom f\wedge y\in\dom f\Rightarrow x=y)\wedge(\forall z)(z\in\dom f\Rightarrow \op{z}{z}\in f))).$}

这会将您的公式插入(出于测试目的)到一个框中,并测试此框的尺寸是否超过\linewidth。如果是,则缩放以适合。如果不是,则插入未缩放的。

\centerline用于防止(如果您不需要内容居中,\parindent您可能想要使用---)。\noindent

您还需要\usepackage{graphicx}--- 才能\resizebox使用。

但是如果你想要将长线居中(使其均匀地飞出边距),你可以使用以下命令:

\newbox\formBox
\newskip\formSkip

\def\forMULAE#1{%
  \setbox\formBox=\hbox{#1}%
  \centerline{%
  \ifdim\wd\formBox>\linewidth%
    \setlength{\formSkip}{{\wd\formBox - \linewidth}/2}%
    \begingroup\leftskip=-\formSkip #1\endgroup%
  \else%
    #1% 
  \fi}}

这也需要\usepackage{calc}

答案2

如果不是太小的话,尝试一下这个: \resizebox{\linewidth}{!}{$ ...formula ...}

答案3

使用该adjustbox包你可以简单地编写:

\adjustbox{center}{\exists C\forall f(f\in C\Leftrightarrow f\in\ms{F}\wedge (\forall x\forall y)((x\in\dom f\wedge y\in\dom f\Rightarrow x=y)\wedge(\forall z)(z\in\dom f\Rightarrow \op{z}{z}\in f))).}

将其置于正常文本区域的中心而不重新缩放。

如果要重新缩放以适应线宽,请使用width=\linewidth或 better max width=\linewidth(仅当宽度大于给定值时才缩放)。这些选项应位于 之前center,例如\adjustbox{max width=\linewidth,center}{...}

请注意,\adjustbox其内容为框,因此其中也可能包含逐字或其他特殊内容。adjustbox如果您愿意,也可以使用环境。

相关内容