7

So I have this basic code:

But the fractional alignment looks awful, any tips to fix this?

\documentclass[11pt, a4paper]{report}
\usepackage{bm}
\usepackage{amsfonts, graphicx, verbatim, amsmath,amssymb, amsthm, mathrsfs, eufrak}
\usepackage{color}
\usepackage{array}
\usepackage{setspace}% if you must (for double spacing thesis)
\usepackage{fancyhdr}
\usepackage{enumitem}
\usepackage{tikz}
\usepackage{parskip}
\usepackage{lipsum}
\usepackage{floatrow}
\usepackage{commath}
\providecommand{\U}[1]{\protect\rule{.1in}{.1in}}


\begin{document}

Let $h$ be a linear mapping of $V_1$ into $V_2$. Let
\[
h^0 = \frac{1}{\abs G} \sum_{t\in G} (\rho_t^2)^{-1} h \rho_t^1
\]
where $\abs G$ is the order of $G$. Then
\begin{enumerate}[label=(\roman*)]
\item If $\rho^1$ and $\rho^2$ are not isomorphic then we have $h^0=0$
\item If $V_1 = V_2$ and $\rho^1 = \rho^2$, $h^0$ is a scalar multiple of the identity, the scalar being $\frac{1}{n} Tr(h)$ where $n = \dim(V_1)$
\end{enumerate}

\end{document}

as you notice, it looks awful.

Mico
  • 506,678
Leo
  • 815

2 Answers2

7

The commath package provides a highly questionable implementation of \abs. Don't load this package unless you absolutely have to. (Aside: You do not have to for the example at hand.)

Instead of loading this package, I suggest you

  • load the mathtools package instead of the amsmath package. The mathtools package is, for all intents and purposes, a superset of the amsmath package; and

  • issue the instruction

    \DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
    

    in the preamble. This sets up a proper implementation of \abs{...}. If you need to auto-size the vertical bars, simply use \abs*{...}.


*Addendum": More about how commath implements \envert (\abs is just an alias for \envert): If \envert{<arg>} is invoked without an optional sizing argument (a whole number between 0 and 4), the following code gets executed:

 \!\left\lvert#2\right\rvert

It's the \! ("negative thinspace") instruction that messes up the symmetry of the full expression. Either write \abs[0]{<arg>} to execute \lvert#2\rvert or, more safely, don't load commath at all and go for a cleaner definition of \abs. The definitions of \abs[1]{...} thru \abs[4]{...} are also messed up, by the way, as are the definitions of \norm and \norm[1] thru \norm]4]. While it's possible, in principle, to correct the faulty definitions of \envert, \abs, \enVert, and \norm, one is better off going for a setup that avoids these complications...

Mico
  • 506,678
  • So I should remove the amsath package and insert the mathtools package? would this affect the remaining document consisting of 40-50 pages? if not then I'll change it since you have much more experience. – Leo Apr 09 '19 at 11:58
  • 1
    @Maths - The mathtools package automatically loads the amsmath package, while taking great care not to mess with the operational details of the macros. – Mico Apr 09 '19 at 12:04
1

Compare the output of

\documentclass[11pt, a4paper]{report}
\usepackage{amsmath}
\usepackage{enumitem}
\usepackage{commath}

\DeclareMathOperator{\Tr}{Tr}

\begin{document}

Let $h$ be a linear mapping of $V_1$ into $V_2$. Let
\[
h^0 = \frac{1}{\abs G} \sum_{t\in G} (\rho_t^2)^{-1} h \rho_t^1
\]
where $\abs G$ is the order of $G$. Then
\begin{enumerate}[label=(\roman*)]
\item If $\rho^1$ and $\rho^2$ are not isomorphic then we have $h^0=0$
\item If $V_1 = V_2$ and $\rho^1 = \rho^2$, $h^0$ is a scalar multiple of the identity,
      the scalar being $\frac{1}{n} \Tr(h)$ where $n = \dim(V_1)$
\end{enumerate}

\end{document}

enter image description here

with the output of

\documentclass[11pt, a4paper]{report}
\usepackage{amsmath}
\usepackage{enumitem}

\makeatletter
% begin definitions for a "better commath"

\newcommand{\dif}{\mathop{}\!\mathrm{d}}
\newcommand{\Dif}{\mathop{}\!\mathrm{D}}

\newcommand{\spx}[1]{%
  \if\relax\detokenize{#1}\relax
    \expandafter\@gobble
  \else
    \expandafter\@firstofone
  \fi
  {^{#1}}%
}

\newcommand\pd[3][]{\frac{\partial\spx{#1}#2}{\partial#3\spx{#1}}}
\newcommand\tpd[3][]{\tfrac{\partial\spx{#1}#2}{\partial#3\spx{#1}}}
\newcommand\dpd[3][]{\dfrac{\partial\spx{#1}#2}{\partial#3\spx{#1}}}

\newcommand{\md}[6]{\frac{\partial\spx{#2}#1}{\partial#3\spx{#4}\partial#5\spx{#6}}}
\newcommand{\tmd}[6]{\tfrac{\partial\spx{#2}#1}{\partial#3\spx{#4}\partial#5\spx{#6}}}
\newcommand{\dmd}[6]{\dfrac{\partial\spx{#2}#1}{\partial#3\spx{#4}\partial#5\spx{#6}}}

\newcommand{\od}[3][]{\frac{\dif\spx{#1}#2}{\dif#3\spx{#1}}}
\newcommand{\tod}[3][]{\tfrac{\dif\spx{#1}#2}{\dif#3\spx{#1}}}
\newcommand{\dod}[3][]{\dfrac{\dif\spx{#1}#2}{\dif#3\spx{#1}}}

\newcommand{\genericdel}[4]{%
  \ifcase#3\relax
  \ifx#1.\else#1\fi#4\ifx#2.\else#2\fi\or
  \bigl#1#4\bigr#2\or
  \Bigl#1#4\Bigr#2\or
  \biggl#1#4\biggr#2\or
  \Biggl#1#4\Biggr#2\else
  \left#1#4\right#2\fi
}
\newcommand{\del}[2][-1]{\genericdel(){#1}{#2}}
\newcommand{\set}[2][-1]{\genericdel\{\}{#1}{#2}}
\let\cbr\set
\newcommand{\sbr}[2][-1]{\genericdel[]{#1}{#2}}
\let\intoo\del
\let\intcc\sbr
\newcommand{\intoc}[2][-1]{\genericdel(]{#1}{#2}}
\newcommand{\intco}[2][-1]{\genericdel[){#1}{#2}}
\newcommand{\eval}[2][-1]{\genericdel.|{#1}{#2}}
\newcommand{\envert}[2][-1]{\genericdel||{#1}{#2}}
\let\abs\envert
\newcommand{\sVert}[1][0]{%
  \ifcase#1\relax
  \rvert\or\bigr|\or\Bigr|\or\biggr|\or\Biggr
  \fi
}
\newcommand{\enVert}[2][-1]{\genericdel\|\|{#1}{#2}}
\let\norm\enVert
\newcommand{\fullfunction}[5]{%
  \begin{array}{@{}r@{}r@{}c@{}l@{}}
  #1 \colon & #2 & {}\longrightarrow{} & #3 \\
            & #4 & {}\longmapsto{}     & #5
  \end{array}
}
%%% end of the definitions
\makeatother


\DeclareMathOperator{\Tr}{Tr}

\begin{document}

Let $h$ be a linear mapping of $V_1$ into $V_2$. Let
\[
h^0 = \frac{1}{\abs G} \sum_{t\in G} (\rho_t^2)^{-1} h \rho_t^1
\]
where $\abs G$ is the order of $G$. Then
\begin{enumerate}[label=(\roman*)]
\item If $\rho^1$ and $\rho^2$ are not isomorphic then we have $h^0=0$
\item If $V_1 = V_2$ and $\rho^1 = \rho^2$, $h^0$ is a scalar multiple of the identity, 
      the scalar being $\frac{1}{n} \Tr(h)$ where $n = \dim(V_1)$
\end{enumerate}

\end{document}

The code has already been presented in https://tex.stackexchange.com/a/135985/4427 and provides a full replacement of commath, avoiding all its weaknesses. If you're tied to commath because you use its macros and features in other places, this can save you. Otherwise define \abs with \DeclarePairedDelimiter as suggested by Mico.

For instance, you can notice the reduced space between “where” and “|G|” in the commath version.

enter image description here

You should define anyway an operator name for “Tr”.

If you decide to go for this, save the part between

% begin definitions for a "better commath"

and

% end of the definitions

in a file called bettercommath.sty in the working directory and do \usepackage{bettercommath}.

egreg
  • 1,121,712