
Estoy buscando un símbolo matemático que muestre saturación. Parece una barra con una línea horizontal en cada extremo. Encontré una pregunta sobre cómo dibujarlo en un nodo:bloque de saturación
Pero quiero usarlo como subíndice en modo matemático.
Respuesta1
No estoy seguro de si esto es lo que quieres, pero puedes diseñar tu propio símbolo sin tikz
. Úselo \mathchoice
para permitir el uso como subíndice o subíndice.
Aquí está el código:
\documentclass{article}
\usepackage{calc} % needed to subtract from \hght
\newlength{\wdth}
\newlength{\hght}
\newlength{\dpth}
\newcommand{\sat}{\mathchoice%
{\settowidth{\wdth}{/}\settoheight{\hght}{/}\settodepth{\dpth}{/}%
\rule[-\dpth]{.25em}{.09ex}\hspace{-.13\wdth}/%
\hspace{-.15\wdth}\rule[\hght-.09ex]{.25em}{.09ex}}
{\settowidth{\wdth}{/}\settoheight{\hght}{/}\settodepth{\dpth}{/}%
\rule[-\dpth]{.25em}{.09ex}\hspace{-.15\wdth}/%
\hspace{-.15\wdth}\rule[\hght-.09ex]{.25em}{.09ex}}
{\settowidth{\wdth}{$\scriptstyle /$}\settoheight{\hght}{$\scriptstyle /$}\settodepth{\dpth}{$\scriptstyle /$}%
\rule[-\dpth]{.2em}{.08ex}\hspace{-.17\wdth}\scriptstyle /%
\hspace{-.17\wdth}\rule[\hght-.08ex]{.2em}{.08ex}}
{\settowidth{\wdth}{$\scriptstyle /$}\settoheight{\hght}{$\scriptscriptstyle /$}\settodepth{\dpth}{$\scriptscriptstyle /$}%
\rule[-\dpth]{.15em}{.07ex}\hspace{-.19\wdth}\scriptscriptstyle /%
\hspace{-.19\wdth}\rule[\hght-.07ex]{.15em}{.07ex}}
}
\begin{document}
$A\sat B_{A\sat B_{A\sat B}}$
\end{document}
Si quieres colas más largas o más cortas, puedes ajustar las longitudes en los \rule
parámetros. El .25em
(o .2em
para subíndice, .18em
para subíndice) controla la longitud.
Respuesta2
Primero crea una standalone
versión de tu ícono, aquí en saturation.tex
:
\documentclass[border=0mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\makeatletter
\pgfdeclareshape{record}{
\inheritsavedanchors[from={rectangle}]
\inheritbackgroundpath[from={rectangle}]
\inheritanchorborder[from={rectangle}]
\foreach \x in {center,north east,north west,north,south,south east,south west}{
\inheritanchor[from={rectangle}]{\x}
}
\foregroundpath{
\pgfpointdiff{\northeast}{\southwest}
\pgf@xa=\pgf@x \pgf@ya=\pgf@y
\northeast
\pgfpathmoveto{\pgfpoint{0}{0.33\pgf@ya}}
\pgfpathlineto{\pgfpoint{0}{-0.33\pgf@ya}}
\pgfpathmoveto{\pgfpoint{0.33\pgf@xa}{0}}
\pgfpathlineto{\pgfpoint{-0.33\pgf@xa}{0}}
\pgfpathmoveto{\pgfpointadd{\southwest}{\pgfpoint{-0.33\pgf@xa}{-0.6\pgf@ya}}}
\pgfpathlineto{\pgfpointadd{\southwest}{\pgfpoint{-0.5\pgf@xa}{-0.6\pgf@ya}}}
\pgfpathlineto{\pgfpointadd{\northeast}{\pgfpoint{-0.5\pgf@xa}{-0.6\pgf@ya}}}
\pgfpathlineto{\pgfpointadd{\northeast}{\pgfpoint{-0.33\pgf@xa}{-0.6\pgf@ya}}}
}
}
\makeatother
\begin{document}
\begin{tikzpicture}
\node[record,minimum size=1cm,fill=blue!30,draw] (a) {};
\end{tikzpicture}
\end{document}
Luego, use este código para incluirlo como la altura del valor local de 1ex
, con un pequeño espacio horizontal a cada lado. Este código se ajustará al tamaño de fuente actual (así que no hay problema si usas Huge
) así como al estilo matemático actual ( \scriptstyle
y \scriptscriptstyle
):
\documentclass{article}
\usepackage{scalerel,graphicx}
\newcommand\sat{\ThisStyle{%
\kern.5\LMpt\includegraphics[height=1\LMex]{saturation}\kern.5\LMpt}}
\begin{document}
\centering
Here is \sat.
In math, $A_{\sat}$
\[
A_{\sat_{\sat}}
\]
\end{document}
Obviamente, puedes cambiar el tamaño ajustándote 1\LMex
a algo diferente. Puede ajustar el espacio ajustando el .5\LMpt
a algo diferente y puede cambiar el color y el grosor de la línea en el tikz
código original.
Por ejemplo, al cambiar el color en saturation.tex
y gray!5
agregar una thick
especificación al dibujo, se obtiene esto:
Eso se traslada directamente al documento principal, donde cambié la especificación de altura a 1.3\LMex
, para llegar a:
SUPLEMENTO
Para ayudar al OP con una solicitud de seguimiento para eliminar el borde y los ejes, reemplácelo saturation.tex
con esto:
\documentclass[border=0mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (-.5,-.4);
\coordinate (B) at (-.3,-.4);
\coordinate (C) at (+.3,+.4);
\coordinate (D) at (+.5,+.4);
\draw [black, thick] (A)--(B)--(C)--(D);
\end{tikzpicture}
\end{document}
Luego, con la definición del código del documento que
\newcommand\sat{\ThisStyle{%
\kern.5\LMpt\includegraphics[height=1.3\LMex]{saturation}\kern.5\LMpt}}
llegamos a
\documentclass{article}
\usepackage{scalerel,graphicx}
\newcommand\sat{\ThisStyle{%
\kern.5\LMpt\includegraphics[height=1.3\LMex]{saturation}\kern.5\LMpt}}
\begin{document}
\centering
Here is \sat.
In math, $A_{\sat}$
\[
A_{\sat_{\sat}}
\]
\Huge
\[
A_{\sat_{\sat}}
\]
\end{document}
Respuesta3
Con picture
modo:
\documentclass{article}
\usepackage{amsmath}
\usepackage{pict2e}
\makeatletter
\DeclareRobustCommand{\saturation}{%
\mathrel{%
\mkern1mu\nonscript\mkern-1mu
\mathpalette\satur@tion\relax
\mkern1mu\nonscript\mkern-1mu
}%
}
\newcommand{\satur@tion}[2]{%
\vcenter{\hbox{%
\sbox\z@{$\m@th#1|$}%
\setlength{\unitlength}{\dimexpr\ht\z@+\dp\z@}%
\saturation@linethickness{#1}%
\begin{picture}(0.6,1)
\roundcap
\polyline(0,0)(0.2,0)(0.4,1)(0.6,1)
\end{picture}%
}}%
}
\newcommand{\saturation@linethickness}[1]{%
\linethickness{%
1.25\fontdimen8
\ifx#1\displaystyle\textfont\else
\ifx#1\textstyle\textfont\else
\ifx#1\scriptstyle\scriptfont\else
\scriptscriptfont\fi\fi\fi 3
}%
}
\makeatother
\begin{document}
$A\saturation B_{A\saturation B_{A\saturation B}}$
\end{document}
El comando \saturation@linethickess
es un viejo truco mío, mira.https://tex.stackexchange.com/a/412159/4427
Elegí hacer que el símbolo tuviera el mismo tamaño vertical que |
; el ancho es el 60% del alto y las tres partes tienen igual ancho. Siéntete libre de cambiar las proporciones. Puedes ensancharlo con
\newcommand{\satur@tion}[2]{%
\vcenter{\hbox{%
\sbox\z@{$\m@th#1|$}%
\setlength{\unitlength}{\dimexpr\ht\z@+\dp\z@}%
\saturation@linethickness{#1}%
\begin{picture}(0.8,1)
\roundcap
\polyline(0,0)(0.2,0)(0.6,1)(0.8,1)
\end{picture}%
}}%
}