Latex 中的负线

Latex 中的负线

我想写这个在此处输入图片描述。我使用了 $\bar{A$\cup$B}$,但出了点问题。有人能帮我吗?

答案1

你的“公式”,即

$\bar{A$\cup$B}$

包含(至少)三个语法错误:

  • 第一个子公式$\bar{A$包含一个左花括号,但没有右花括号;

  • 中间子公式\cup在数学模式之外遇到;并且

  • 第三个子公式 $B}$ 包含一个右花括号,但没有相应的左花括号。


\bar在其参数上放置了一个短横线。因此, $\bar{A\cup B}$整个公式中只会出现一个短横线。这可能不是您想要的。$\bar{A}\cup\bar{B}$将产生两个短横线——同样,这不是您想要的。

如果要求有一条横线跨越和A,则应这样写\cupB

$\overline{A\cup B}$

有些人可能会发现绘制的线\overline看起来太长,因此太“重”。如果你属于这一类,你可能会发现这个\widebar宏很有用。下面示例代码中使用的宏代码\widebar直接取自Hendrik Vogt 的早期帖子

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}  % required for the following code

%%% The following code was created by Hendrik Vogt; see 
%%% https://tex.stackexchange.com/a/60253/5001 for details.
%%% Note that the 'amsmath' package is required.
\makeatletter
\let\save@mathaccent\mathaccent
\newcommand*\if@single[3]{%
  \setbox0\hbox{${\mathaccent"0362{#1}}^H$}%
  \setbox2\hbox{${\mathaccent"0362{\kern0pt#1}}^H$}%
  \ifdim\ht0=\ht2 #3\else #2\fi
  }
%The bar will be moved to the right by a half of 
%\macc@kerna, which is computed by amsmath:
\newcommand*\rel@kern[1]{\kern#1\dimexpr\macc@kerna}
%If there's a superscript following the bar, then 
%no negative kern may follow the bar; an additional {} 
%makes sure that the superscript is high enough in 
%this case:
\newcommand*\widebar[1]{\@ifnextchar^{{\wide@bar{#1}{0}}}{\wide@bar{#1}{1}}}
%Use a separate algorithm for single symbols:
\newcommand*\wide@bar[2]{\if@single{#1}{\wide@bar@{#1}{#2}{1}}{\wide@bar@{#1}{#2}{2}}}
\newcommand*\wide@bar@[3]{%
  \begingroup
  \def\mathaccent##1##2{%
%Enable nesting of accents:
    \let\mathaccent\save@mathaccent
%If there's more than a single symbol, use the 
%first character instead (see below):
    \if#32 \let\macc@nucleus\first@char \fi
%Determine the italic correction:
    \setbox\z@\hbox{$\macc@style{\macc@nucleus}_{}$}%
    \setbox\tw@\hbox{$\macc@style{\macc@nucleus}{}_{}$}%
    \dimen@\wd\tw@
    \advance\dimen@-\wd\z@
%Now \dimen@ is the italic correction of the symbol.
    \divide\dimen@ 3
    \@tempdima\wd\tw@
    \advance\@tempdima-\scriptspace
%Now \@tempdima is the width of the symbol.
    \divide\@tempdima 10
    \advance\dimen@-\@tempdima
%Now \dimen@ = (italic correction / 3) - (Breite / 10)
    \ifdim\dimen@>\z@ \dimen@0pt\fi
%The bar will be shortened in the case \dimen@<0 !
    \rel@kern{0.6}\kern-\dimen@
    \if#31
      \overline{\rel@kern{-0.6}\kern\dimen@\macc@nucleus\rel@kern{0.4}\kern\dimen@}%
      \advance\[email protected]\dimexpr\macc@kerna
%Place the combined final kern (-\dimen@) if it 
%is >0 or if a superscript follows:
      \let\final@kern#2%
      \ifdim\dimen@<\z@ \let\final@kern1\fi
      \if\final@kern1 \kern-\dimen@\fi
    \else
      \overline{\rel@kern{-0.6}\kern\dimen@#1}%
    \fi
  }%
  \macc@depth\@ne
  \let\math@bgroup\@empty \let\math@egroup\macc@set@skewchar
  \mathsurround\z@ \frozen@everymath{\mathgroup\macc@group\relax}%
  \macc@set@skewchar\relax
  \let\mathaccentV\macc@nested@a
%The following initialises \macc@kerna and 
%calls \mathaccent:
  \if#31
    \macc@nested@a\relax111{#1}%
  \else
%If the argument consists of more than one symbol, 
%and if the first token is a letter, use that letter 
%for the computations:
    \def\gobble@till@marker##1\endmarker{}%
    \futurelet\first@char\gobble@till@marker#1\endmarker
    \ifcat\noexpand\first@char A\else
      \def\first@char{}%
    \fi
    \macc@nested@a\relax111{\first@char}%
  \fi
  \endgroup
}
\makeatother
%%% End of Hendrik Vogt's code

\begin{document} 
%$\bar{A$\cup$B}$ %% This throws at least 3 syntax errors

$\bar{A\cup B}$      % much too short

$\bar{A}\cup\bar{B}$ % two separate short bars

$\overline{A\cup B}$ % looks rather "heavy"

$\widebar{A\cup B}$  % better-looking than \overline...
\end{document}

相关内容