¿Buena forma de hacer números \ textcircled?

Esta pregunta llevó a un nuevo paquete:
circledsteps

Estoy tratando de hacer algunos números atractivos en un círculo, usando el comando simple:

\textcircled{1} 

Sin embargo, el círculo está desalineado verticalmente con el número y parece un poco descuidado:

texto alternativo

Alguna sugerencia de cómo Ajusté la alineación vertical para que los números se vean más centrados que los círculos. O, si esa no es una opción, ¿qué otras formas de lograr los mismos resultados son posibles?

Usaré esas solo para números, y en muy pocos lugares, por lo que el ajuste manual por glifo es una opción.

Estoy usando pdfLaTeX con Computer Modern, si eso importa.

Comentarios

  • Aquí obtuve dos buenas respuestas, por menos de 30 minutos utes (¡ustedes son rápidos!). Yo ‘ probablemente haré una respuesta wiki de la comunidad que resuma todas las opciones uno de estos días, tal vez algunas otras soluciones aparezcan mientras tanto.
  • I ‘ m privados de sueño, ese ‘ s por qué!
  • ¿Qué paquete proporciona \textcircled?
  • @Matthew: Parece estar integrado con LaTeX. Funciona de inmediato.
  • Puede usar Unicode. U + 2460-2473 para 1 a 20, U + 24EA para 0, U + 3251-325F para 21-35 y U + 32B1-32BF para 36-50.

Respuesta

Aquí «una solución de TikZ:

\documentclass{article} \usepackage{tikz} \newcommand*\circled[1]{\tikz[baseline=(char.base)]{ \node[shape=circle,draw,inner sep=2pt] (char) {#1};}} \begin{document} Numbers aligned with the text: \circled{1} \circled{2} \circled{3} end. \end{document} 

texto alternativo

Es solo un nodo. Las opciones de TikZ se utilizan para alinear la línea base, ajustar el tamaño y obtener la forma del círculo. Eres libre de elegir más opciones con respecto al tamaño o al grosor del círculo (opción thick). Hay más: por ejemplo, puedes incluso nombrar los nodos con otro argumento para conectarlos mediante flechas. más tarde.

Si a uno le gusta usarlo para una lista enumerada, por ejemplo, es fácil pero debe estar protegido:

\usepackage{enumitem} ... \begin{enumerate}[label=\protect\circled{\arabic*}] \item First item \item Second item \item Third item \item Fourth item \end{enumerate} 

texto alternativo

Comentarios

  • ¡Buen ejemplo! He tenido problemas en el pasado usando Ejemplos de TikZ en línea, pero ahora veo que se resuelve con baseline=(char.base). Genial.
  • @Stefan: tal vez deberías reemplazar \newcommand por \DeclareRobustCommand, así que el \protect ya no es necesario, lo cual es más fácil de usar.
  • Entonces uno debe usar \ newcommand para declarar un puño de comando vacío y luego usar \ DeclareRobustCommand. De esa manera, un comando existente emitirá un error.
  • @LuisFelipeVillavicencioLopez ¡Seguro! Los comentarios son no es lo mejor para las discusiones de código. Quizás publique una nueva pregunta, o deje que ‘ hable en la LaTeX Community donde publico diariamente.
  • Esto es bueno, pero el problema es que puede ‘ t usarse dentro de un \tikzpicture — como, para ejemplo, un texto de nodo o una etiqueta. ¿Existe alguna solución para un » universal » números agradables en un círculo? Como referencia, consulte tex.stackexchange.com/questions/496348/…

Respuesta

Me sorprendió gratamente la cantidad de personas que decidieron probarlo y surgieron muchas soluciones interesantes. Según la tradición, esta respuesta será la wiki de la comunidad y resumirá y comparará todas las soluciones sugeridas.


Por la presente sugiero tres criterios de evaluación diferentes, cada uno calificado del 1 al 5:

  • Simplicidad . Esta es una medida de lo fácil que es utilizar la solución propuesta. Puntos deducidos por usar paquetes adicionales o definir algo que no sea una simple macro de conveniencia.
  • Flexibilidad . Esto incluye principalmente lo fácil que es usarlo en otros contextos, en este caso diferentes formas, tamaños y grosores de marcos.
  • Precisión . En pocas palabras, qué tan estéticamente agradable se ve la solución, particularmente qué tan bien se centra el glifo en el círculo y cómo se ajusta al texto circundante de ejecución libre.

Aquí vamos:

  1. La raisebox solución.

    Gracias a Jimi Oke por los dedos rápidos. Este vino primero, y es el que más me gusta para la aplicación que tenía en mente. Es tan fácil como:

    \raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {8}}} 

    Nada más que eso. En el frente de la simplicidad, no hay nada mejor que esto.Sólido 5/5 , ya que no se necesitan paquetes adicionales, y la definición difícil de manejar se puede resumir trivialmente en una sola línea \def.

    En cuanto a flexibilidad, esta solución tiene una tasa bastante baja, ya que no tienes control sobre el tamaño del círculo o los parámetros (estoy seguro de que algunos piratas informáticos de TeX demuéstrame que estoy equivocado, pero por el amor de $ DEITY , perdónanos tales abominaciones). 2/5 es un bien merecido aquí. {1}

    El problema de precisión es subjetivo como siempre, pero necesitaría jugar con las distancias verticales para obtenerlo justo ™ para el tipo de letra que han seleccionado. 2/5 .

  2. El ding -y solución.

    Esto vino de TH. que sugiere usar algunos glifos de símbolos predefinidos. El documento omnisciente símbolos-a4 dice que la única forma verdadera de hacerlo es usar:

    \usepackage{pifont} \ding{172}--\ding{181} % seriffed fonts \ding{192}--\ding{201} % sans-seriffed fonts 

    O incluso la nomenclatura del tablero Go:

    \usepackage{igo} \whitestone{1}--\whitestone{99} 

    En el lado de la simplicidad, esta tasa es de 4.5 / 5 , aunque soy reacio a darle una estrategia 5 debido a los paquetes adicionales involucrados.

    Esto no es nada flexible. Si no te gustan los glifos, estás solo. 1/5 .

    Los glifos en sí están bien diseñados, como cabría esperar, y los números son visualmente bien alineado con los círculos. Aunque si tiene un tipo de letra con un estilo distinto, es posible que la fuente de los números no encaje bien con el texto.

  3. El tikz solución.

    Ahh, siempre hay eso, no es así. Esto se debe a Stefan Kottwitz .

    \usepackage{tikz} \newcommand*\circled[1]{\tikz[baseline=(char.base)]{ \node[shape=circle,draw,inner sep=2pt] (char) {#1};}} \begin{document} Numbers aligned with the text: \circled{1} \circled{2} \circled{3} end. \end{document} 

    Personalmente, «no me gusta tikz (lo sé , Debería aprenderlo uno de estos días), por lo que seguir con esto sería un uso único del paquete para mí, que me gustaría evitar. No puedo «dar más de 2/5 aquí, pero el tikz fanboiz (¡y galz!) debería aumentar esto hasta 4/5 .

    Como En lo que respecta a la flexibilidad: este es el verdadero negocio. Stefan demostró incluso cómo usar los símbolos encerrados en círculos con listas enumeradas, de todas las cosas. Sin duda, son posibles diferentes formas de marcos, con diferentes grados de ajuste alrededor del glifo. Indiscutible 5/5 .

    La alineación de la línea de base es excelente sin jugar con algunos ajustes manuales, lo cual es bastante bueno. El espacio alrededor del símbolo parece correcto, aunque en el texto de ejecución libre, el círculo debería tener un ajuste más ajustado alrededor del número, lo que se puede lograr jugando con el parámetro inner sep en la definición del comando. 5/5 aquí.

  4. pict2e / picture solución

    Una adición tardía de Herbert propone el uso de algunas primitivas básicas de los paquetes picture y pict2e. Aquí va:

    \usepackage{pict2e,picture} \newsavebox\CBox \newlength\CLength \def\Circled#1{\sbox\CBox{#1}% \ifdim\wd\CBox>\ht\CBox \CLength=\wd\CBox\else\CLength=\ht\CBox\fi \makebox[1.5\CLength]{\makebox(0,1.5\CLength){\put(0,0){\circle{1.5\CLength}}}% \makebox(0,1.5\CLength){\put(-.5\wd\CBox,0){#1}}}} 

    En el frente de la simplicidad, esto no se califica demasiado bien. Parece un poco complicado, aunque definitivamente comprensible después de estudiarlo, y usa dos paquetes adicionales. 2/5 es una puntuación razonable aquí.

    La flexibilidad no está del todo construida- en, pero ciertamente es posible. El radio del círculo se puede ajustar modificando el factor 1.5, y se puede jugar con el ajuste de la línea de base. 3.5 / 5 .

    Tal como está en esta definición, la línea de base del texto circundante es tangente al círculo en lugar de estar alineada con el círculo. base numérica. Esto puede ser deseable en algunas circunstancias, pero los números parecen un poco fuera de lugar de esta manera. Se pueden lograr mejores resultados con algunos cálculos adicionales al colocar los cuadros, y un 3.5 / 5 se da aquí para reflec Este potencial.

  5. La otra tikz solución obligatoria

    Matthew Leingang y morbusg probaron suerte en esto, y aunque sus esfuerzos son ciertamente apreciados, creo que la solución de Stefan es más simple. Estoy agradecido por el esfuerzo (y su humildad), y voté a favor de ambas respuestas.

Puntuación final:

  • Simplicity : raisebox
  • Flexibilidad : tikz
  • Precisión : empatado entre tikz y ding

En general: tikz, sin dudarlo ( aclamación del público, sombreros lanzados, pañuelos agitados y todo eso).

Finalmente, un código de prueba:

\documentclass{article} \usepackage{pict2e,picture} % picture \usepackage{tikz} % tikz \usepackage{pifont} % ding % Picture solution \newsavebox\CBox \newlength\CLength \def\numcircledpict#1{\sbox\CBox{#1}% \ifdim\wd\CBox>\ht\CBox \CLength=\wd\CBox\else\CLength=\ht\CBox\fi \makebox[1.5\CLength]{\makebox(0,1.5\CLength){\put(0,0){\circle{1.5\CLength}}}% \makebox(0,1.5\CLength){\put(-.5\wd\CBox,0){#1}}}} % TikZ solution \newcommand*\numcircledtikz[1]{\tikz[baseline=(char.base)]{ \node[shape=circle,draw,inner sep=1.2pt] (char) {#1};}} % Modified \textcircled solution \newcommand*\numcircledmod[1]{\raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {#1}}}} \begin{document} \begin{tabular}{l|l} Original & Lorem \textcircled{1} ipsum \textcircled{2} dolor \\ Modified & Lorem \numcircledmod{1} ipsum \numcircledmod{2} dolor\\ TikZ & Lorem \numcircledtikz{1} ipsum \numcircledtikz{2} dolor\\ Picture & Lorem \numcircledpict{1} ipsum \numcircledpict{2} dolor\\ Ding serif & Lorem \ding{172} ipsum \ding{173} dolor\\ Ding sans & Lorem \ding{192} ipsum \ding{193} dolor\\ \end{tabular} \end{document} 

{1} Si alguien decide escribir algo así, avíseme y lo incluiré en esta respuesta sin costo adicional, pero tenga en cuenta que la publicación se marcará posteriormente como \textcircled{18+} para proteger a los débiles de corazón.

Comentarios

  • excelente resumen, ¡bien hecho! Publicaciones como esta hacen que este sitio valga la pena.
  • @Yiannis It ‘ ha pasado algún tiempo desde que publiqué la pregunta, pero solo encontré tiempo para pulir el resumen. Espero que sea de utilidad para personas con el mismo problema.
  • Dices, » El espacio alrededor del símbolo parece correcto, aunque en ejecución libre texto, el círculo debe tener un ajuste más ajustado alrededor del número. » Esto se soluciona fácilmente cambiando inner sep=2pt a inner sep=1pt en la \circled definición del comando.
  • @Matt: Claro, mi intención aquí era señalar un problema estético, pero supongo No estaba ‘ muy claro en eso. La información sobre lo que debe cambiarse ahora se menciona en la publicación. Gracias.
  • @MartinTapankov El problema se resuelve con raisebox siempre que cada llamada esté precedida por \ protect.

Responder

La solución más rápida sería utilizar el comando \raisebox. He jugado un poco con él, y parece que al reducir el texto en 0.9pt se coloca la cifra aproximadamente en el centro:

 \textcircled{\raisebox{-0.9pt}{8}} 

Podrías jugar con él para obtener el centro absoluto, pero definitivamente está entre 0.9 y 1pt. Tengo la idea aquí . ¡Parece que el comando \textcircled funciona mejor con texto! Pero, de todos modos, esto debería resolver su problema.

Comentarios

  • Eso ‘ va a cambiar la línea de base de los números que podrían no ser deseables. Pero quizás con un \raisebox externo para aumentar todo el número encerrado en un círculo, las líneas de base podrían mantenerse.
  • ¡Mais oui! Debería haber pensado en esto yo mismo. ¡Gracias! ‘ esperaré un poco más sugerencias antes de marcar esto como aceptado.
  • @TH. Es cierto, pero eso no ‘ me importa: los números no aparecen en el texto de ejecución libre, sino que son encabezados de las columnas de la tabla o se utilizan para etiquetar.
  • Pero, en realidad, la salida \textcircled ya tiene una línea de base más baja con o sin \raisebox. Entonces, si el autor prefiere que todo esté al ras, entonces debería optar por pifont. Con un \raisebox externo, el máximo es un aumento de 0.5 puntos, lo que hace que el círculo vuelva a su posición original, que no está alineada con el texto. Aumentar todo más allá de 0,5 puntos comienza a cambiar el número, no el círculo, negando los esfuerzos iniciales. Por lo tanto, si el autor quiere un buen \textcircled, entonces aquí ‘ uno: \raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {8}} } . Esto es bastante bueno.
  • @Martin: también puede recibir una sugerencia de TikZ. 😉

Respuesta

morbusg ya mencionado que algunas fuentes tienen números encerrados como glifos Unicode y muestran cómo insertarlos directamente. Algunas fuentes proporcionan una interfaz más fácil de usar para acceder a los números, p. Ej. Linux Libertine y Junicode. Obviamente, esto significa que nos estamos desviando de su requisito de utilizar Computer Modern. La ventaja de estos números Unicode presumiblemente es que fueron elaborados por un diseñador de fuentes, por lo que no debería ser necesario realizar ajustes.

Aquí hay una prueba de concepto simple (también necesita tener el paquete junicode instalado):

\documentclass{article} \usepackage{fontspec} \usepackage{libertine} \begin{document} \libertineGlyph{uni2460} \libertineGlyph{uni24F5} \libertineGlyph{uni2776} {\fontspec[Ligatures=Discretionary]{Junicode}[1] [[1]] <1>} \end{document} 

salida

Estos métodos se describen en la documentación respectiva.

Aquí hay una forma aún más cómoda de acceder a estos conjuntos de números. Los números con doble círculo están disponibles (por Unicode) del 1 al 10, los otros del 0 al 20.

\documentclass{article} \usepackage{fontspec} \usepackage{libertine} \usepackage{pgf} % for the calculation % \libcirc and \libcircblk display their "0" if the parameter is out of range \newcommand{\libcirc}[1]{\pgfmathparse{ ifthenelse(#1 > 0 && #1 < 21, Hex(9311+#1), Hex(9450) }\libertineGlyph{uni\pgfmathresult}} \newcommand{\libcircdbl}[1]{\pgfmathparse{Hex(9460+#1)}\libertineGlyph{uni\pgfmathresult}} \newcommand{\libcircblk}[1]{\pgfmathparse{ ifthenelse(#1 > 0 && #1 < 11, Hex(10101+#1), ifthenelse(#1 > 10 && #1 < 21, Hex(9450-10+#1), Hex(9471) ) ) }\libertineGlyph{uni\pgfmathresult}} \newcommand{\juncirc}[1]{{\fontspec[Ligatures=Discretionary]{Junicode}[#1]}} \newcommand{\juncircdbl}[1]{{\fontspec[Ligatures=Discretionary]{Junicode}[[#1]]}} \newcommand{\juncircblk}[1]{{\fontspec[Ligatures=Discretionary]{Junicode}<#1>}} \usepackage{pgffor} % just for the demo loop \setlength{\parindent}{0pt} % just for the demo \begin{document} \section{Linux Libertine} \foreach \x in {0,...,20} {\libcirc{\x} } \foreach \x in {1,...,10} {\libcircdbl{\x} } \foreach \x in {0,...,20} {\libcircblk{\x} } \section{\fontspec{Junicode}Junicode} \foreach \x in {0,...,20} {\juncirc{\x} } \foreach \x in {1,...,10} {\juncircdbl{\x} } \foreach \x in {0,...,20} {\juncircblk{\x} } \end{document} 

salida

Comentarios

  • Creo que esto no funciona con pdflatex.
  • @moose Sí .. Tengo que comprobar si el primer bit de código funciona con el actual libertine en absoluto (pero luego pdfLaTeX debería estar bien), el segundo bit es solo XeLaTeX / LuaLaTeX, debería poner eso en la respuesta también.

Respuesta

PGF es excesivo para esta aplicación, pero si ya lo tiene cargado, puede usarlo:

\documentclass{article} \usepackage{tikz} \newcommand{\pgftextcircled}[1]{ \setbox0=\hbox{#1}% \dimen0\wd0% \divide\dimen0 by 2% \begin{tikzpicture}[baseline=(a.base)]% \useasboundingbox (-\the\dimen0,0pt) rectangle (\the\dimen0,1pt); \node[circle,draw,outer sep=0pt,inner sep=0.1ex] (a) {#1}; \end{tikzpicture} } \newcommand{\pangram}{\noindent{The \textcircled{0} quick \textcircled{1} brown \textcircled{2} fox \textcircled{3} jumps \textcircled{4} over \textcircled{5} the \textcircled{6} lazy \textcircled{7} dog.} } \begin{document} \begin{minipage}{0.5\textwidth} \pangram \bigskip \let\textcircled=\pgftextcircled \pangram \end{minipage} \end{document} 

salida de fragmento

Como puede ver, hay algo de espacio adicional alrededor de los círculos en comparación con \textcircled pero no está mal.

Edición pre-post: Veo que Stefan y morbusg me han adelantado. Oh, bueno.

Comentarios

  • Creo que un proceso externo es realmente excesivo para algo que se puede hacer dentro de LaTeX. Puede simplemente construirlo como \ newcommand {\ Ring} [1] {\ raisebox {-1pt} {\ begin {tabular} {@ {} c @ {}} {\ small # 1} \ [ -11.5pt] \ BigCircle \ end {tabular}}}. El autoajuste de las dimensiones se deja como ejercicio para el lector 🙂
  • Peter, ¿qué proceso externo?
  • @ u0b34a0f6ae: Creo que Peter se está refiriendo al hecho de que tikz usa un montón de \special comandos agregados después de que TeX procese la entrada. Entonces es ‘ «externo» al sistema de digestión normal de TeX.

Respuesta

Desde symbols.pdf, parece que pifont puede hacer lo que quiera con \ding{172} hasta \ding{181} o \ding{192} hasta \ding{201}.

O el igo paquete con \whitestone{1} a \whitestone{99}, aunque eso está destinado a la composición tipográfica de tableros Go.

Parece que se ha encontrado la solución, pero aquí hay una comparación simple.

\documentclass{article} \usepackage{pifont} \def\X#1{% #1% \textcircled{#1}% \raisebox{.9pt}{\textcircled{\raisebox{-.9pt}{#1}}}% \ding{\numexpr171+#1\relax}% } \begin{document} \X0\X1\X2\X3\X4\X5\X6\X7\X8\X9 \end{document} 

ingrese la descripción de la imagen aquí

Comentarios

  • Esta es una gran solución. Sin embargo, los pifonts están bastante aplastados, en comparación con la salida \textcircled. La ventaja, sin embargo, es que los pifonts están alineados con el texto, lo que puede ser algo bueno para el autor.
  • @TH: Genial. ¿Qué hace el paquete textcomp?
  • @Jimi: Pensé que era necesario para \textcircled. Estaba equivocado. (Estaba mirando la Tabla 17 de Symbols.pdf y señala que textcomp es obligatorio para \newtie, pero yo no estaba ‘ t leyendo con suficiente atención.) ‘ he actualizado el código.
  • @PatrickT Gracias por la imagen. Es ‘ una buena adición.

Respuesta

La mathdesign El paquete define \figurecircled que tiene un mejor espaciado para los números que \textcircled sí.

El paquete mathdesign es incompatible con amsfonts y amssymb pero si de todas formas estás usando una fuente de diseño matemático, eso no es un problema.

Comentarios

  • ¿Esta respuesta fue rechazada? ¿Quién hizo esto, podría explicar por qué cree que esta es una mala solución al problema?
  • Yo no ‘ t votó en contra, pero recibí un error con un simple archivo de prueba. ¿Puede proporcionar un MWE? Mi mensaje de error: ! TeX capacity exceeded, sorry [input stack size=5000]. \figurecircled ->\MDB-cmd \figurecircled \MDB\figurecircled l.14 ...footnote{of the emergency} $\figurecircled {1}$ ! ==> Fatal error occurred, no output PDF file produced!

Responder

@Stefan » La respuesta es buena, sin embargo, mejoré su respuesta.

En primer lugar, si \circled{1} y \circled{10} se colocan juntos , los dos círculos no tendrán el mismo tamaño, así que agregué un parámetro opcional al comando \circled. El parámetro opcional se volvió a calificar como un marcador de posición para asegurarme de que estos círculos aparezcan en el mismo tamaño.

Además, dado que «usé \ifblank, que se proporciona en el paquete etoolbox, para verificar si se proporcionó el parámetro opcional, Usé \robustify para hacer que el comando sea robusto. Esto superó la desventaja de usar \DeclearRobustCommand, mencionado por @Stefan en un comentario de su respuesta. Por lo tanto, el \protact ya no es necesario.


Código:

\documentclass{article} \usepackage{enumitem} \usepackage{tikz} \usepackage{etoolbox} \newcommand{\circled}[2][]{% \tikz[baseline=(char.base)]{% \node[shape = circle, draw, inner sep = 1pt] (char) {\phantom{\ifblank{#1}{#2}{#1}}};% \node at (char.center) {\makebox[0pt][c]{#2}};}} \robustify{\circled} \begin{document} \mbox{}\rlap{\rule{.7\linewidth}{.4pt}}% The original version: \circled{1} and \circled{10}. \mbox{}\rlap{\rule{.7\linewidth}{.4pt}}% The improved version: \circled[10]{1} and \circled[10]{10}. \newcommand{\dcircled}[1]{\circled[00]{#1}} \begin{enumerate}[label=\dcircled{\arabic*}, noitemsep] \item I \item am \item happy \item to \item join \item with \item you \item today \item in \item what \item will \item go \item down \item in \item history \item as \item the \item greatest \item demonstration \item for \item freedom \item in \item the \item history \item of \item our \item nation. \end{enumerate} \end{document} 

Resultado:

Comentarios

  • ¿Conoce la opción minimum size para los nodos?
  • @percusse Lo siento, pero No ‘ no te entiendo.
  • Puede definir un tamaño mínimo para los nodos circulares sin un cuadro o fantasma con un tamaño uniforme.
  • @percusse Eso ‘ es una buena sugerencia , sin embargo, ‘ no creo que entiendas la idea de mi publicación. Diseñé este parámetro opcional para uniformar el tamaño de los círculos, ya que los círculos de diferentes tamaños que están alineados entre sí darán un aspecto poco amistoso.

Respuesta

Aún más fácil:

\textcircled{\small{2}} 

o

{\large \textcircled{\small 2}} 

o

{\Large \textcircled{\normalsize 2}} 

[ed. Segletes, proporcionando MWE & imagen]

\documentclass{article} \usepackage{enumitem} \begin{document} \begin{enumerate}[label=\large\protect\textcircled{\small\arabic*}] \item First item \item Second item \item Third item \item Fourth item \end{enumerate} \textcircled{\small{2}} or {\large \textcircled{\small 2}} or {\Large \textcircled{\normalsize 2}} \end{document} 

Representación LaTeX del archivo .tex anterior

Comentarios

  • Esto podría funcionar cuando el círculo no está rodeado de texto y el tamaño de fuente del número no es un problema, pero ‘ prefiero usar una de las otras soluciones en su lugar.
  • ¿Podemos invertir los colores dentro del círculo?

Responde

this La respuesta se ha convertido en un paquete en CTAN: https://ctan.org/pkg/circledsteps

Las respuestas aquí son todas agradable, y especialmente el tikz uno es muy configurable. Pero tiene un problema: no puedes usarlo dentro de otros tikzpicture s de forma segura. Así que fusioné un par de cosas e implementé esto:

 \documentclass{article} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{tikz} \makeatletter % Based on https://tex.stackexchange.com/questions/7032/good-way-to-make-textcircled-numbers % \usepackage{pict2e,picture} \pgfkeys{/csteps/inner ysep/.initial=4pt, /csteps/inner xsep/.initial=4pt, /csteps/inner color/.initial=red, /csteps/outer color/.initial=blue, } \newsavebox\csteps@CBox \newlength\csteps@XLength \newlength\csteps@YLength \newlength\csteps@YDepth \newlength\csteps@tmplen \def\csteps@CircledParam#1#2{\sbox\csteps@CBox{#2}% \csteps@XLength=\wd\csteps@CBox\advance\csteps@XLength by\pgfkeysvalueof{/csteps/inner xsep}\relax \csteps@tmplen=\pgfkeysvalueof{/csteps/inner ysep}\relax \csteps@YDepth=\dp\csteps@CBox\advance\csteps@YDepth by 0.5\csteps@tmplen\relax \csteps@YLength=\ht\csteps@CBox\advance\csteps@YLength by\dp\csteps@CBox\advance\csteps@YLength by\pgfkeysvalueof{/csteps/inner ysep}\relax \typeout{DBG:#2\space X\space\the\csteps@XLength\space Y:\the\csteps@YLength\space D:\the\csteps@YDepth}% \raisebox{-#1\csteps@YDepth}{% \ifdim\csteps@XLength>\csteps@YLength \makebox[\csteps@XLength]{% X bigger than Y \makebox(0,\csteps@YLength){% \color{\pgfkeysvalueof{/csteps/outer color}}\put(0,0){\oval(\csteps@XLength,\csteps@YLength)}% }% \makebox(0,\csteps@YLength){% \put(-.5\wd\csteps@CBox,0){\textcolor{\pgfkeysvalueof{/csteps/inner color}}{#2}}% }}% \else \makebox[\csteps@YLength]{% \makebox(0,\csteps@YLength){% \color{\pgfkeysvalueof{/csteps/outer color}}\put(0,0){\circle{\csteps@YLength}}% }% \makebox(0,\csteps@YLength){% \put(-.5\wd\csteps@CBox,0){\textcolor{\pgfkeysvalueof{/csteps/inner color}}{#2}}% }}% \fi }% } \def\Circled#1{\csteps@CircledParam{1}{#1}} \def\CircledTop#1{\csteps@CircledParam{0}{#1}} \makeatother \begin{document} This is normal text \Circled{1} is on the baseline, \CircledTop{2} is on top. \par\bigskip This is more evident if you have descendent, like p:\Circled{p} and \CircledTop{p}. \par\bigskip For big horizontal things it becomes oval: \Circled{200} or \CircledTop{199}. \par\bigskip Inside \texttt{tikz} \begin{tikzpicture}[scale=0.8, rotate=30, text width=3cm, transform shape] \node [draw,color=green!50!black]{text \Circled{1}}; \end{tikzpicture} \par\bigskip \tikzset{/csteps/inner ysep=10pt} \tikzset{/csteps/inner xsep=10pt} More space: \Circled{1} \Circled{2} \Circled{p} \Circled{200} \Circled{199}. \end{document}  

Ejemplo de uso

Comentarios

  • ¡Se ve genial! (+1)

Responda

con los comandos de imagen predeterminados:

\documentclass{article} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{pict2e,picture} \newsavebox\CBox \newlength\CLength \def\Circled#1{\sbox\CBox{#1}% \ifdim\wd\CBox>\ht\CBox \CLength=\wd\CBox\else\CLength=\ht\CBox\fi \makebox[1.2\CLength]{\makebox(0,1.2\CLength){\put(0,0){\circle{1.2\CLength}}}% \makebox(0,1.2\CLength){\put(-.5\wd\CBox,0){#1}}}} \begin{document} \Huge foo \Circled{1} \Circled{2} \Circled{ABC} \end{document} 

texto alternativo

Respuesta

Con Plain (me encontré con esto por casualidad y recordé esta pregunta):

\def\circled#1{{\ooalign{\hfil\lower.1ex\hbox{#1}\hfil\crcr\Orb}}} $\circled1 \circled2 \circled3 \ldots \circled9 \quad \circled{23}$ \bye 

circlednums

Con XeTeX:

\font\circled="Arial Unicode MS" {\circled ➀} Didn"t occur to me {\circled ➄} earlier that some fonts have {\circled ➇} these. \bye 

O tal vez con TikZ:

\input tikz baseline ain"t so pretty \par baseline ain"t so pretty \par baseline \tikz \node[circle,draw] {2}; ain"t \par so pretty \tikz[baseline] \node[circle,draw] {2}; baseline \par ain"t so pretty baseline \par ain"t \tikz[inner sep=1pt,baseline=-.75ex] \node[circle,draw] {2}; so pretty \par baseline \tikz[inner sep=2pt,baseline=-.75ex] \node[circle,draw] {2}; ain"t so \par pretty baseline ain"t so \par pretty \tikz[inner sep=.25ex,baseline=-.75ex] \node[circle,draw] {2}; baseline \par ... actually, now it sorta is \par baseline ain"t so pretty \par baseline ain"t so pretty \bye 

mg src =» https://i.imgur.com/LAqbN.png «alt =» «title =» Alojado por imgur.com «/>

Maldita sea, Stefan se me adelantó con una mejor.

Respuesta

Aquí hay una \pdfliteral solución. Solo funciona para números individuales.

\def\circled#1{% #1% \pdfliteral{ q .5 w 10 0 0 10 -2.5 3.5 cm .05 w .5 0 m .5 .276 .276 .5 0 .5 c -.276 .5 -.5 .276 -.5 0 c -.5 -.276 -.276 -.5 0 -.5 c .276 -.5 .5 -.276 .5 0 c h S Q }% } \circled{1} a \circled{2} b \circled{3} c \circled{10} \bye 

ingrese la descripción de la imagen aquí

Comentarios

  • ¿Por qué las transformaciones de coordenadas?
  • @percusse En realidad, acabo de copiar el código de aquí y lo modifiqué un poco. Si puede proporcionar algún recurso para aprender más sobre la codificación de PDF, estaría muy feliz.
  • En realidad es PostScript, pero PDF también admite muchos objetos gráficos. Por tanto, es ‘ un poco engorroso comprender el conjunto de todos los operadores admitidos en PDF. Pero al menos para empezar a leer este código puedes usar la guía de referencia adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/… . También en la especificación ISO (tabla 59 en adobe.com/devnet/pdf/pdf_reference.html ) puede reconocer los operadores de TikZ asignados al frontend;). El problema inicial a comprender es configurar el cuadro delimitador, el resto es la notación PS habitual.

Responder

Usando pifont paquete y símbolos de \ding{172} a \ding{211} fácilmente tiene excelentes números en círculos, pero si quiere números mayores de 10 tenemos un problema. Como muestran otros usuarios de stackexchange aquí, podemos resolver el problema si los números no son demasiado grandes, pero las cosas se vuelven difíciles (códigos complejos de LaTeX) y podemos tener problemas si escribimos dentro de un texto (si el círculo se agranda, LaTeX puede obligarnos a ampliar el espacio entre líneas, o tal vez a superponer el círculo sobre las líneas superior e inferior adyacentes): las cosas son un poco más simples si solo queremos un número en un círculo en una lista de elementos. Esta falta de flexibilidad podría resultar molesta en algunos casos. Una solución razonable parece usar el paquete tcolorbox : después de varios intentos, descubrí que simplemente tenemos que agregar en el preámbulo este

\usepackage{tcolorbox} \newcommand{\ciao}[1]{{\setlength\fboxrule{0pt}\fbox{\tcbox[colframe=black,colback=white,shrink tight,boxrule=0.5pt,extrude by=1mm]{\small #1}}}} 

y invocamos en el documento el comando \ ciao cuando queramos un número «encerrado» (ejemplo: \ ciao {12} «rodeará» el número 12). Por cierto, el uso de fbox en la línea de preámbulo es importante porque sin él, la caja redondeada podría sobresalir de la línea de la izquierda o de la derecha cuando están en el margen de la línea: esto sería muy poco estético.

Continuando, veo en esta solución 3 pros y 1 contra:

  • pros : código simple, buen funcionamiento dentro de un texto también, flexibilidad (números grandes también & en caso de que podamos jugar fácilmente con bordes o colores: ver 0.5pt o negro & blanco en la línea del preámbulo).
  • cons : no tenemos círculos, pero sí un cuadro redondeado, pero me parece un compromiso razonable.

Un ejemplo de aplicación de este método es

Quel ramo del lago di Como \ciao{1}, che volge a mezzogiorno, tra due catene \ciao{20} non interrotte di monti, tutto a seni e a golfi, a seconda dello sporgere e del rientrare di quelli, vien, quasi a un tratto, a restringersi, e a prender corso \ciao{252} e figura di fiume, tra un promontorio a destra, e un"ampia costiera dall"altra parte; \ciao{3432} e il ponte che ivi congiunge le due rive, par che renda ancor più sensibile all"occhio questa trasformazione, e segni il punto in cui il lago cessa, e l"Adda ricomincia, per ripigliar poi nome di lago dove le rive, allontanandosi di nuovo, lascian l"acqua distendersi e rallentarsi in nuovi golfi e in nuovi seni. 

que da

ingrese la descripción de la imagen aquí

tenga en cuenta que los números no sobresalen y que el espacio entre líneas es siempre el mismo: no importa si tenemos un número o no. En resumen, estos números casi encerrados funcionan muy bien incluso si están dentro de un texto.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *