Cette question a conduit à un nouveau package:
circledsteps
Jessaie de faire de beaux nombres dans un cercle, en utilisant la commande simple:
\textcircled{1}
Cependant, le cercle est mal aligné verticalement avec le nombre et semble un peu bâclé:
Toutes les suggestions, comment Jajuste lalignement vertical pour que les nombres paraissent plus centrés par rapport aux cercles? Ou, si ce nest pas une option, quelles autres façons dobtenir les mêmes résultats sont possibles?
Je les utiliserai uniquement pour les nombres, et dans très peu dendroits, donc lajustement manuel par glyphe est une option.
Jutilise pdfLaTeX
avec Computer Modern, si cela compte.
Commentaires
Réponse
Voici « une solution 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}
Cest juste un nœud. Les options TikZ sont utilisées pour aligner la ligne de base, pour ajuster la taille et pour obtenir la forme du cercle. Vous êtes libre de choisir dautres options concernant la taille ou lépaisseur du cercle (option thick
). Il y a plus: par exemple, vous pouvez même nommer les nœuds par un autre argument pour les relier par des flèches plus tard.
Si on aime lutiliser pour une liste énumérée, par exemple, cest facile mais doit être protégé:
\usepackage{enumitem} ... \begin{enumerate}[label=\protect\circled{\arabic*}] \item First item \item Second item \item Third item \item Fourth item \end{enumerate}
Commentaires
- Bel exemple! Jai eu des problèmes dans le passé en utilisant Exemples TikZ en ligne mais maintenant je vois que cela est résolu par
baseline=(char.base)
. Cool. - @Stefan: peut-être devriez-vous remplacer
\newcommand
par\DeclareRobustCommand
, comme ça le\protect
nest plus nécessaire, ce qui est plus convivial. - Ensuite, il faut utiliser \ newcommand pour déclarer un poing de commande vide, puis utiliser \ DeclareRobustCommand. De cette façon, une commande existante émettra une erreur.
- @LuisFelipeVillavicencioLopez Bien sûr! Les commentaires sont pas le meilleur pour les discussions de code. Peut-être postez une nouvelle question ou laissez la ‘ parler à la Communauté LaTeX où je poste tous les jours.
- Cest bien, mais le problème est que cela peut ‘ être utilisé dans un
\tikzpicture
— comme, pour exemple, un texte de nœud ou une étiquette. Existe-t-il une solution pour un » universel » de jolis nombres encerclés? Pour référence, voir tex.stackexchange.com/questions/496348/…
Réponse
Jai été agréablement surpris par le nombre de personnes qui ont décidé de lessayer, et de nombreuses solutions intéressantes sont apparues. Selon la tradition, cette réponse sera un wiki de la communauté et résumera et comparera toutes les solutions suggérées.
Je suggère ici trois critères dévaluation différents, chacun noté de 1 à 5:
- Simplicité . Cest une mesure de la facilité dutilisation de la solution proposée. Points déduits pour lutilisation de packages supplémentaires ou pour définir autre chose quune simple macro de commodité.
- Flexibilité . Cela inclut principalement la facilité dutilisation de cette fonction dans dautres contextes, dans ce cas différentes formes, tailles et épaisseurs de cadre.
- Précision . En termes simples, à quel point la solution est esthétique, en particulier à quel point le glyphe est centré dans le cercle et comment il sadapte au texte libre environnant.
Nous y voilà:
-
La
raisebox
solution.Merci à Jimi Oke pour les doigts rapides. Cest arrivé en premier, et cest celui que jaime particulièrement pour lapplication que javais en tête. Cest aussi simple que:
\raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {8}}}
Rien de plus. Sur le front de la simplicité, il ne va pas mieux que cela.Solide 5/5 , car aucun paquet supplémentaire nest nécessaire et la définition compliquée peut être facilement extraite dans une seule ligne
\def
.Flexibiltiy-sage, cette solution est assez faible, car vous navez aucun contrôle sur la taille du cercle ou les paramètres (je suis sûr que certains hackers TeX prouvez-moi que jai tort, mais pour lamour de $ DEITY , épargnez-nous de telles abominations). 2/5 est bien mérité ici. {1}
Le problème de précision est subjectif, comme toujours, mais vous devez jouer avec les distances verticales pour obtenir exactement ce quil faut ™ pour la police que vous ont sélectionné. 2/5 .
-
Le
ding
-y solution.Cela vient de TH. qui suggère dutiliser des glyphes de symboles prédéfinis. Le document omniscient symboles-a4 dit que la seule vraie façon de le faire est dutiliser:
\usepackage{pifont} \ding{172}--\ding{181} % seriffed fonts \ding{192}--\ding{201} % sans-seriffed fonts
Ou même la nomenclature du tableau Go:
\usepackage{igo} \whitestone{1}--\whitestone{99}
Côté simplicité, cela vaut 4,5 / 5 , même si je « suis réticent à lui donner un straigt 5 en raison des paquets supplémentaires impliqués.
Ce nest pas du tout flexible. Si vous naimez pas les glyphes, vous êtes seul. 1/5 .
Les glyphes eux-mêmes sont bien conçus, comme on peut sy attendre, et les nombres sont visuellement bien aligné avec les cercles. Bien que si vous avez une police avec un style distinct, la police des nombres pourrait ne pas bien saccorder avec le texte.
-
Lobligation
tikz
solution.Ahh, il y a toujours ça, ce nest pas ça. Cest dû à 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}
Personnellement, je « ne suis pas dans
tikz
(je sais , Je devrais l apprendre un de ces jours), alors je pourrais utiliser ce package de façon ponctuelle, ce que je voudrais éviter. Je ne peux « t donner plus que 2/5 ici, mais letikz
fanboiz (et galz!) devrait remonter tout cela jusquà 4/5 .Comme en ce qui concerne la flexibilité: cest la vraie affaire. Stefan a même montré comment utiliser les symboles encerclés avec des listes énumérées, de toutes choses. Différentes formes de cadre sont certainement possibles, avec un degré dajustement variable autour du glyphe. Indiscutable 5/5 .
Lalignement de la ligne de base est de premier ordre sans jouer avec quelques ajustements manuels, ce qui est plutôt sympa. Lespacement autour du symbole semble correct, bien que dans le texte libre, le cercle devrait de préférence avoir un ajustement plus serré autour du nombre, ce qui peut être obtenu en jouant avec le paramètre
inner sep
dans la définition de la commande. 5/5 ici. -
pict2e
/picture
solutionUn ajout tardif par Herbert propose dutiliser certaines primitives de base des packages
picture
etpict2e
. Voici:\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}}}}
Sur le plan de la simplicité, cela ne donne pas trop de note. Cela semble un peu compliqué, bien que certainement compréhensible après lavoir étudié, et utilise deux packages supplémentaires. 2/5 est un score raisonnable ici.
La flexibilité nest pas tout à fait intégrée- mais cest certainement possible. Le rayon du cercle peut être ajusté en modifiant le facteur
1.5
, et lajustement de la ligne de base peut être joué avec. 3.5 / 5 .Telle quelle se présente dans cette définition, la ligne de base du texte environnant est tangente au cercle au lieu dêtre alignée avec le cercle base de nombres. Cela peut être souhaitable dans certaines circonstances, mais les nombres semblent un peu déplacés de cette façon. De meilleurs résultats peuvent être obtenus avec quelques calculs supplémentaires lors du placement des boîtes et un 3,5 / 5 est donné ici pour reflec t ce potentiel.
-
Lautre
tikz
solution obligatoireMatthew Leingang et morbusg ont tenté leur chance dans ce domaine, et bien que leurs efforts soient certainement appréciés, je pense que la solution de Stefan est plus simple. Je suis reconnaissant pour leffort (et votre humilité), et jai voté pour vos deux réponses.
Score final:
- Simplicité :
raisebox
- Flexibilité :
tikz
- Précision : à égalité entre
tikz
etding
Dans lensemble: tikz
, sans hésitation ( acclamations du public, chapeaux jetés, mouchoirs agités et tout ça).
Enfin, un code de test:
\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 quelquun décide décrire une telle chose, faites-le moi savoir et je linclurai dans cette réponse sans frais supplémentaires, mais sachez que le message sera ensuite marqué \textcircled{18+}
pour protéger les âmes sensibles.
Commentaires
- excellent résumé, bravo! Des messages comme celui-ci rendent ce site intéressant.
- @Yiannis Cela ‘ fait longtemps depuis que jai publié la question, mais je nai trouvé que le temps de peaufiner Le résumé. Jespère quil sera utile aux personnes ayant le même problème.
- Vous dites, » Lespacement autour du symbole semble correct, bien quen mode libre texte, le cercle doit de préférence avoir un ajustement plus serré autour du nombre. » Ce problème est facilement résolu en remplaçant
inner sep=2pt
parinner sep=1pt
dans la définition de la commande\circled
. - @Matt: Bien sûr – mon intention ici était de signaler un problème esthétique, mais je suppose Je n’étais ‘ pas très clair à ce sujet. Les informations sur ce qui doit être changé sont maintenant mentionnées dans larticle. Merci.
- @MartinTapankov Le problème est résolu avec risebox à condition que chaque appel soit précédé de \ protect.
Réponse
La solution la plus rapide serait dutiliser la commande \raisebox
. Jai un peu joué avec, et il semble que le fait de réduire le texte de 0,9 pt place le chiffre approximativement au centre:
\textcircled{\raisebox{-0.9pt}{8}}
Vous pouvez jouer avec lui pour obtenir le centre absolu mais il est certainement entre 0,9 et 1 pt. Jai eu lidée ici . Il semble que la commande \textcircled
fonctionne mieux pour le texte! Mais, de toute façon, cela devrait résoudre votre problème.
Commentaires
- Que ‘ va changer la ligne de base des nombres qui pourraient ne pas être souhaitables. Mais peut-être quavec un
\raisebox
externe pour augmenter le nombre encerclé entier, les lignes de base pourraient être maintenues. - Mais oui! Jaurais dû y penser moi-même. Merci! ‘ je vais attendre un peu plus de suggestions, avant de marquer cela comme accepté.
- @TH. Cest vrai, mais cela na ‘ pas dimportance pour moi – les nombres napparaissent pas dans le texte libre, mais sont plutôt des en-têtes de colonnes de tableau ou utilisés pour létiquetage.
- Mais, en fait, la sortie
\textcircled
a déjà une ligne de base inférieure avec ou sans\raisebox
. Donc, si lauteur préfère tout vider, alors il devrait opter pourpifont
. Avec un\raisebox
extérieur, le maximum est une augmentation de 0,5 pt, qui ramène le cercle à sa position dorigine, qui nest pas au même niveau que le texte. Élever tout au-delà de 0,5 pt commence à déplacer le nombre, pas le cercle, annulant les efforts initiaux. Ainsi, si lauteur veut un bon\textcircled
, alors ici ‘ s celui-ci:\raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {8}} }
. Cest en fait assez bon. - @Martin: vous pourriez aussi avoir une suggestion TikZ. 😉
Réponse
morbusg déjà mentionné que certaines polices ont des nombres encerclés comme glyphes Unicode et a montré comment les incorporer directement. Certaines polices fournissent une interface plus conviviale pour accéder aux nombres, par exemple Linux Libertine et Junicode. Évidemment, cela signifie que nous nous écartons de votre exigence d’utiliser Computer Modern. Lavantage de ces numéros Unicode est vraisemblablement quils ont été conçus par un concepteur de polices, il ne devrait donc pas être nécessaire de les ajuster.
Voici une simple preuve de concept (vous devez également avoir le package junicode
installé):
\documentclass{article} \usepackage{fontspec} \usepackage{libertine} \begin{document} \libertineGlyph{uni2460} \libertineGlyph{uni24F5} \libertineGlyph{uni2776} {\fontspec[Ligatures=Discretionary]{Junicode}[1] [[1]] <1>} \end{document}
Ces méthodes sont décrites dans les documentations respectives.
Voici une manière encore plus confortable daccéder à ces ensembles de nombres. Les nombres doublement cerclés sont (par Unicode) disponibles de 1 à 10, les autres de 0 à 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}
Commentaires
- Je pense que cela ne fonctionne pas avec
pdflatex
. - @moose Oui .. Je dois vérifier si le premier bit de code fonctionne avec le courant
libertine
du tout (mais alors pdfLaTeX devrait convenir), le deuxième bit est XeLaTeX / LuaLaTeX uniquement, je devrais le mettre également dans la réponse.
Réponse
PGF est excessif pour cette application, mais si vous lavez déjà chargée, vous pouvez lutiliser:
\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}
Comme vous pouvez le voir, il ya un espace supplémentaire autour des cercles par rapport à \textcircled
mais ce nest pas mal.
montage pré-post: je vois que Stefan et morbusg mont battu au poing. Eh bien.
Commentaires
- Je pense qu’un processus externe est en effet excessif pour quelque chose qui peut être fait dans LaTeX. Vous pouvez le construire tout aussi simplement que \ newcommand {\ Ring} [1] {\ risebox {-1pt} {\ begin {tabular} {@ {} c @ {}} {\ small # 1} \ [ -11,5pt] \ BigCircle \ end {tabular}}}. Lauto-ajustement des dimensions est laissé comme exercice au lecteur 🙂
- Peter, quel processus externe?
- @ u0b34a0f6ae: Je pense que Peter fait référence au fait que
tikz
utilise un tas de commandes\special
ajoutées après que TeX traite lentrée. Donc, il ‘ est « externe » au système de digestion TeX normal.
Réponse
Daprès symboles.pdf, il semble que pifont
peut faire ce que vous voulez avec \ding{172}
à \ding{181}
ou \ding{192}
à \ding{201}
.
Ou igo
package avec \whitestone{1}
à \whitestone{99}
, bien que cela « soit destiné à la composition de tableaux Go.
On dirait que la solution a été trouvée, mais ici « une simple comparaison.
\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}
Commentaires
- Cest une excellente solution. Cependant, les pifonts sont plutôt écrasés, par rapport à la sortie
\textcircled
. Lavantage, cependant, est que les pifonts sont alignés avec le texte, ce qui peut être une bonne chose pour lauteur. - @TH: Nice. Que fait le package textcomp?
- @Jimi: Je pensais quil était nécessaire pour
\textcircled
. Javais tort. (Je regardais le tableau 17 de Symbols.pdf et il note quetextcomp
est requis pour\newtie
, mais je nétais pas ‘ t lire assez attentivement.) Jai ‘ mis à jour le code. - @PatrickT Merci pour limage. Cest ‘ un bon ajout.
Réponse
Le mathdesign
Le package définit \figurecircled
qui a un meilleur espacement pour les nombres que \textcircled
fait.
Le package mathdesign est incompatible avec amsfonts
et amssymb
mais si vous utilisez de toute façon une police mathdesign, ce nest pas un problème.
Commentaires
- Cette réponse a été rejetée? Est-ce que quiconque a fait cela pourrait expliquer pourquoi il pense que cest une mauvaise solution au problème?
- Je nai pas ‘ t vous rejeter mais jai obtenu une erreur avec un simple fichier de test. Pouvez-vous fournir un MWE? Mon message derreur:
! 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!
Réponse
@Stefan » La réponse de s est bonne, cependant, jai amélioré sa réponse.
Premièrement, si \circled{1}
et \circled{10}
sont placés ensemble , les deux cercles ne seront pas de la même taille, jai donc ajouté un paramètre facultatif à la commande \circled
. Le paramètre facultatif a été reclassé en tant quespace réservé pour massurer que ces cercles apparaissent dans le même taille.
De plus, comme jai utilisé \ifblank
, fourni par le package etoolbox
, pour vérifier si le paramètre facultatif a été fourni, Jai utilisé \robustify
pour rendre la commande robuste. Cela contournait linconvénient dutiliser \DeclearRobustCommand
, mentionné par @Stefan dans un commentaire de sa réponse. Ainsi, le \protact
nest plus nécessaire.
Code:
\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}
Résultat:
Commentaires
- vous connaissez loption
minimum size
pour les nœuds? - @percusse Désolé, mais Je ‘ ne vous comprends pas.
- Vous pouvez définir une taille minimale pour les nœuds de cercle sans boîte ou fantôme de taille uniforme.
- @percusse Cest ‘ une bonne suggestion cependant, je ‘ ne pense pas que vous comprenez lidée dans mon message. Jai conçu ce paramètre facultatif pour uniformiser la taille des cercles, car des cercles de différentes tailles alignés ensemble donneront un aspect hostile.
Réponse
Encore plus simple:
\textcircled{\small{2}}
ou
{\large \textcircled{\small 2}}
ou
{\Large \textcircled{\normalsize 2}}
[ed. Segletes, fournissant MWE & image]
\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}
Commentaires
- This pourrait fonctionner lorsque le cercle nest pas entouré de texte et que la taille de la police du nombre nest pas un problème – mais je ‘ utiliser plutôt lune des autres solutions à la place.
- Pouvons-nous inverser les couleurs à lintérieur du cercle?
Répond
ceci la réponse a été convertie dans un package sur CTAN: https://ctan.org/pkg/circledsteps
Les réponses ici sont toutes sympa, et surtout celui tikz
est grandement configurable. Mais cela pose un problème: vous ne pouvez « pas lutiliser dans dautres tikzpicture
en toute sécurité. Jai donc fusionné quelques éléments et mis en œuvre ceci:
\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}
Commentaires
- Ça a lair génial! (+1)
Répondez
avec les commandes dimage par défaut:
\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}
Réponse
Avec Plain (je suis tombé dessus par hasard et je me suis souvenu de cette question):
\def\circled#1{{\ooalign{\hfil\lower.1ex\hbox{#1}\hfil\crcr\Orb}}} $\circled1 \circled2 \circled3 \ldots \circled9 \quad \circled{23}$ \bye
Avec XeTeX:
\font\circled="Arial Unicode MS" {\circled ➀} Didn"t occur to me {\circled ➄} earlier that some fonts have {\circled ➇} these. \bye
Ou peut-être avec 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 = » Hébergé par imgur.com « />
Merde, Stefan ma battu avec un plus beau.
Réponse
Voici une solution \pdfliteral
. Cela ne fonctionne que pour les nombres uniques.
\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
Commentaires
- Pourquoi les transformations de coordonnées?
- @percusse En fait, je viens de copier le code de ici et de le modifier un peu. Si vous pouvez fournir des ressources pour en savoir plus sur le codage PDF, je serais très heureux.
- Il sagit en fait de PostScript, mais PDF prend également en charge de nombreux objets graphiques. Il est donc ‘ un peu fastidieux de comprendre lensemble de tous les opérateurs pris en charge dans PDF. Mais au moins pour commencer à lire ce code, vous pouvez utiliser le guide de référence adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/… . Également dans la spécification ISO (tableau 59 dans adobe.com/devnet/pdf/pdf_reference.html ), vous pouvez reconnaître les opérateurs TikZ mappés au frontend;). Le problème initial à saisir est la configuration de la boîte englobante, le reste est la notation PS habituelle.
Réponse
Utilisation pifont package et symboles de \ding{172}
à \ding{211}
vous avez facilement dexcellents nombres encerclés, mais si vous voulez encerclé nombres supérieurs à 10, nous avons un problème. Comme lont montré dautres utilisateurs de stackexchange ici, nous pouvons résoudre le problème si les nombres ne sont pas trop gros, mais les choses sont devenues difficiles (codes LaTeX complexes) et nous pouvons avoir des problèmes si nous écrivons à lintérieur dun texte (si le cercle est devenu grand, LaTeX peut être forcé dagrandir lespace entre les lignes, ou peut-être de chevaucher le cercle sur les lignes supérieures et inférieures adjacentes): les choses sont un peu plus simples si nous voulons seulement un nombre encerclé dans une liste déléments. Ce manque de flexibilité pourrait dans certains cas être gênant. Une solution raisonnable semble utiliser le package tcolorbox : après des tentatives, jai trouvé que nous devons simplement ajouter en préambule ceci
\usepackage{tcolorbox} \newcommand{\ciao}[1]{{\setlength\fboxrule{0pt}\fbox{\tcbox[colframe=black,colback=white,shrink tight,boxrule=0.5pt,extrude by=1mm]{\small #1}}}}
et appeler dans le document la commande \ ciao quand on veut un nombre « encerclé » (exemple: \ ciao {12} « encerclera » le nombre 12). Dailleurs, lutilisation de fbox dans la ligne de préambule est importante car sans elle, la boîte arrondie pourrait dépasser de la ligne à gauche ou à droite quand elles sont en marge de la ligne: ce serait très inesthétique.
Pour reprendre, je vois dans cette solution 3 avantages et 1 inconvénients:
- avantages : code simple, bon travail à lintérieur dun texte aussi, flexibilité (grands nombres aussi & au cas où on pourrait facilement jouer avec les bordures ou les couleurs: voir 0.5pt ou noir & blanc dans la ligne de préambule).
- cons : nous navons pas de cercles mais de boîtes arrondies, mais je trouve que cest un compromis raisonnable.
Un exemple dapplication de cette méthode est
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.
qui donne
veuillez noter que les nombres ne font pas saillie et que l’espace entre les lignes est toujours le même: peu importe si nous avons un nombre ou non. En bref, ces nombres presque encerclés fonctionnent très bien même sils sont à lintérieur dun texte.
\textcircled
?