Tikz en subíndice o exponente

Aug 19 2020

A veces uso tikz para dibujar un símbolo especial que luego se usa en la ecuación. No sé si hay una mejor manera de hacerlo, pero es muy fácil y da buenos resultados. Para dar un ejemplo concreto:

\newcommand{\symb}{\tikz[baseline=(s.base)]{
        \node[inner sep=1pt,outer sep=0pt] (s) {$s$};
        \draw[-] (s.north east) -- (s.south east) -- (s.south west) -- (s.north west);
    }}

para obtener una s de estilo matemático con tres lados de un cuadro alrededor. Funciona bien en casi todas las situaciones con una excepción: no se escala correctamente cuando se usa como subíndice o exponente.

En ambos s tienen exactamente el mismo tamaño, aunque aparece en un título o con diferente tamaño de la fuente, al igual que ambos todavía S tienen exactamente el mismo tamaño. Pero cuando el guión está involucrado, es decir , el segundo el$s$ vs $\symb${\Large $s$ vs $\symb$}$X_s$ vs $X_\symb$$s$ no tiene el tamaño de la secuencia de comandos.

Entonces, ¿hay alguna manera de modificar el comando $\symb$ arriba, de modo que cuando se usa dentro de un subíndice o exponente, se escala de la misma manera que lo hace el texto?

Ya encontré una solución que funciona: cree una segunda versión del comando para usar cuando esté en estilo de script:

\newcommand{\symbsc}{\tikz[baseline=(s.base)]{
        \node[inner sep=1pt,outer sep=0pt] (s) {$\scriptstyle s$};
        \draw[-] (s.north east) -- (s.south east) -- (s.south west) -- (s.north west);
    }}

que produce el resultado deseado visualmente, pero me resulta un poco molesto tener dos funciones diferentes dependiendo de si estoy en estilo script o no. ¿Esperaba que alguien pudiera sugerirme una mejor manera de hacer esto?

Ejemplo mínimo:

\documentclass{article}
\usepackage{tikz}

\newcommand{\symb}{\tikz[baseline=(s.base)]{
        \node[inner sep=1pt,outer sep=0pt] (s) {$s$};
        \draw[-] (s.north east) -- (s.south east) -- (s.south west) -- (s.north west);
    }}

\begin{document}

In normale size: $\symb$ vs $s$.

In large scale, it scales well: {\Large $\symb$ vs $s$ }

But in subscript, it doesn't: $X_{\symb}$ vs $X_{s}$

It especially look bad if both appear in the same subscrit:

$X_{s \symb}$ vs $s \symb$

\end{document}

Respuestas

2 muzimuzhiZ Aug 19 2020 at 22:17

Envolver toda la \tikzcosa dentro \text{...}proporcionada por amsmathpaquete hace el trabajo. Tenga en cuenta que \textes como \mboxsi se usara en modo texto, lo que no perjudica en este caso.

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}

\makeatletter
\newcommand{\symb}{%
  \text{%
    \tikz[baseline=(s.base)] {
      \node[inner sep=1pt, outer sep=0pt] (s) {$s$};
      \draw (s.north east) -- (s.south east) -- (s.south west) -- (s.north west);
    }%
  }%
}
\makeatother

\begin{document}

In normale size: $\symb$ vs $s$.

In large scale, it scales well: {\Large $\symb$ vs $s$ }

But in subscript, it doesn't: $X_{\symb}$ vs $X_{s}$

It especially look bad if both appear in the same subscrit:

$X_{s \symb}$ vs $s \symb$

\end{document}