38

I was taught to make a left subscript as a right subscript to {}. For example, I would use

f: {}_RA \rightarrow {}_RB

to typeset this:

If you instead use

f: _RA \rightarrow _RB

the left subscripts end up in the wrong place (because LaTeX thinks they are right subscripts of the object before):

However, this trick doesn't work well with operators like /otimes. The code

A {}_\varphi\otimes_\psi B

puts too much spaace between the tensor product symbol and the subscript:

One solution I've found is to use spaces (including a negative thin space) to adjust the spacing. The code

A \; {}_\varphi \! \otimes_\psi B

produces this:

However, this is a kludge and doesn't communicate to LaTeX that \varphi should be attached to the \otimes. Also, the left subscript is still just a tad too far to the left. Does anyone know a more elegant solution to this?

4
  • There's the \sideset command for large operator symbols (like \sum), but it is specifically described as "unreliable" for ordinary symbols like \otimes. Commented Jul 28, 2010 at 17:05
  • Not directly relevant, but how do you get the underscores into the TeX snippets? The MO workaround of backquoting the snippet doesn't seem to work. Commented Jul 28, 2010 at 21:59
  • 4
    @András Salamon: In "code mode" — not backquotes, but on a separate line starting with at least 4 spaces (or hit the "1001" button in the toolbar) — everything is printed exactly as you type. Commented Jul 29, 2010 at 4:29
  • Okay can delete comments now (by the way previously the comment was "Possible duplicate of X", but since SE made it "more friendly" I've been getting a few users comment to reply "yes" to such comments)
    – user202729
    Commented Jan 5, 2022 at 11:39

3 Answers 3

26

Try the tensor package. You can just issue

$A \tensor[_\varphi]{\otimes}{_\psi} B$

to get what you specified as an example. Note that if you have mixed upper and lower indices, the standard \tensor command will leave "phantom" spaces. To make all indices flush against the central symbol, use \tensor*.

1
  • (Oops; that comment was meant to be left on your comment to my variant on this question!) Commented Jul 27, 2010 at 21:03
15

The problem here is the special treatment of \otimes as a relational symbol, which adds space on either side of the symbol. Put it in braces to suppress this behaviour:

A {}_\varphi{\otimes}_\psi B

The accepted answer, using tensor, does this implicitly.

For best spacing one should declare the decorated operation as a new mathematical symbol. Instead of \mathop (suggested by François G. Dorais) which is used for large operators like \prod and \sum, \mathbin as used for \otimes, + and \cap might be suitable:

A \mathbin{{}_\varphi{\otimes}_\psi} B

1
  • 10
    Wrapping it all with \mathop produces the right spacing before and after the subscripts. Commented Jul 28, 2010 at 22:34
4

I think there are a few packages that support this, such as leftidx and mathtools.

3
  • The second link doesn't work =(
    – Dima
    Commented Jul 27, 2010 at 14:25
  • 1
    leftidx works by putting a vphantom of the main glyph before the left super/subscript. So it won't get the horizontal spacing right (note: I'm saying that without actually testing it). Commented Jul 27, 2010 at 14:31
  • 1
    leftidx doesn't look like it addresses the spacing issue.
    – fryguybob
    Commented Jul 27, 2010 at 14:39

Not the answer you're looking for? Browse other questions tagged .