2

I am trying to use the Union symbol in an acmart document. I tried using \bigcup_{lower}^{upper} value command to generate the union symbol but Latex leaves an empty space for the U symbol. The same is happening for other symbols also (Sigma for summing over a series). I have included the asmath package and the document compiles also, the only problem is that the symbols are not displayed. Any help on how I can get these symbols inline?

  • 1
    Please provide a short complete document code that demonstrates the problem. – Steven B. Segletes Mar 17 '17 at 12:23
  • A simple \documentclass{acmart}\begin{document}\[\bigcup_{0}^1\]\end{document} shows the symbol. – egreg Mar 17 '17 at 12:58
  • Thanks @egreg! I had already used this command but the problem was lmodern package that I had included in my document. Turns out there was some conflict caused because of that. I removed this package and the code compiles fine, and the symbols appear fine too! Thanks again – BajajG Mar 17 '17 at 13:25
  • 2
    @BajajG As far as I know, acmart uses by default Linux Libertine; since it is intended for submissions to journals or conferences, one should not use font packages with it. – egreg Mar 17 '17 at 13:31
  • Yeah, I didn't think about this. I had some JSON text and C++ code that I wanted to include so I used a few font packages - fontenc, listings, and lmodern. I hope the other two don't cause further problems. – BajajG Mar 17 '17 at 13:46
3

The acmart class does

\newif\if@ACM@newfonts
\@ACM@newfontstrue
\IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
    have libertine package installed.  Please upgrade your
    TeX}\@ACM@newfontsfalse}
\IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not
    have zi4 package installed.  Please upgrade your TeX}\@ACM@newfontsfalse}
\IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
    have newtxmath package installed.  Please upgrade your
    TeX}\@ACM@newfontsfalse}
\if@ACM@newfonts
\RequirePackage[tt=false]{libertine}
\RequirePackage[varqu]{zi4}
\RequirePackage[libertine]{newtxmath}
\RequirePackage[T1]{fontenc}
\fi

This means that the class wants to use Linux Libertine for standard text, the newtxmath fonts adapted to Libertine for math and Inconsolata (zi4) for the monospaced font. It resorts to the default LaTeX fonts only if the local TeX system doesn't have the necessary resources.

The class also selects the T1 output font encoding (unless the system is defective). It always loads amsmath.

If we do

\documentclass{acmart}

\begin{document}

\show\bigcup
\show\bigcupop

\[\bigcup\]

\end{document}

we get, on the terminal,

> \bigcup=macro:
->\DOTSI \bigcupop \slimits@ .

> \bigcupop=\mathchar"13D0.

If we also add lmodern, the output would be the same, but the log file would contain the message

Missing character: There is no <D0> in font lmex10!

This is because newtxmath sets as font for large symbols one that uses the LMX encoding, which is different from the encoding used by lmodern, which assumes the standard encodings for math fonts.

Here's the problem: newtxmath defines \bigcupop to be in the large symbol fonts (the 3 in the mathcode above) at position D0. When lmodern is loaded, it doesn't reset the correspondence symbol-slot and so nothing is typeset, because the large symbols font used by lmodern has nothing at that position.

The conclusion is

when using acmart don't load any font package that sets the text fonts or the standard math fonts.

Additional math symbol fonts (for instance stmaryrd) that augment the set of math symbols available may be used, but beware that they could clash with the main fonts. As another example, amssymb should not be loaded, because newtxmath already covers it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.