Questa domanda ha portato a un nuovo pacchetto:
circledsteps
Sto cercando di creare dei bei numeri in un cerchio, utilizzando il semplice comando:
\textcircled{1}
Tuttavia, il cerchio non è allineato verticalmente con il numero e sembra un po sciatto:
Eventuali suggerimenti su come Regolo lallineamento verticale in modo che i numeri appaiano più centrati rispetto ai cerchi? Oppure, se questa non è unopzione, quali altri modi sono possibili per ottenere gli stessi risultati?
Userò solo quelli per i numeri e in pochissime posizioni, quindi la regolazione manuale per glifo è unopzione.
Sto usando pdfLaTeX
con Computer Modern, se è importante.
Commenti
risposta
Here “sa TikZ solution:
\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}
È solo un nodo. Le opzioni TikZ vengono utilizzate per allineare la linea di base, per regolare le dimensioni e per ottenere la forma del cerchio. Sei libero di scegliere ulteriori opzioni per quanto riguarda la dimensione o lo spessore del cerchio (opzione thick
). Cè di più: ad esempio potresti persino nominare i nodi con un altro argomento per collegarli tramite frecce più tardi.
Se uno vuole usarlo per un elenco enumerato, ad esempio, è facile ma deve essere protetto:
\usepackage{enumitem} ... \begin{enumerate}[label=\protect\circled{\arabic*}] \item First item \item Second item \item Third item \item Fourth item \end{enumerate}
Commenti
- Esempio carino! Ho avuto problemi in passato utilizzando Esempi di TikZ in linea ma ora vedo che è stato risolto da
baseline=(char.base)
. Fantastico. - @Stefan: forse dovresti sostituire
\newcommand
di\DeclareRobustCommand
, in questo modo\protect
non è più necessario, il che è più facile da usare. - Quindi si dovrebbe usare \ newcommand per dichiarare un pugno di comando vuoto e quindi usare \ DeclareRobustCommand. In questo modo, un comando esistente genererà un errore.
- @LuisFelipeVillavicencioLopez Certo! I commenti sono non è il massimo per le discussioni sul codice. Forse pubblica una nuova domanda o lascia che la ‘ parli nella LaTeX Community dove pubblico ogni giorno.
- È carino, ma il problema è che ‘ non può essere utilizzato allinterno di un
\tikzpicture
— come, per ad esempio, un testo di nodo o unetichetta. Esiste una soluzione per un ” universale ” bei numeri cerchiati? Per riferimento, vedi tex.stackexchange.com/questions/496348/…
Risposta
Sono rimasto piacevolmente sorpreso di quante persone abbiano deciso di provarlo e sono spuntate molte soluzioni interessanti. Come da tradizione, questa risposta sarà un wiki della comunità e riassumerà e confronterà tutte le soluzioni suggerite.
Con la presente suggerisco tre diversi criteri di valutazione, ciascuno classificato da 1 a 5:
- Semplicità . Questa è una misura di quanto sia facile utilizzare la soluzione proposta. Punti detratti per lutilizzo di pacchetti aggiuntivi o per la definizione di qualcosa di diverso da una semplice macro di convenienza.
- Flessibilità . Ciò include principalmente quanto sia facile utilizzarlo in altri contesti, in questo caso diverse forme, dimensioni e spessori del telaio.
- Precisione . In poche parole, quanto sia esteticamente gradevole la soluzione, in particolare quanto bene il glifo è centrato nel cerchio e come si adatta al testo a scorrimento libero.
Ecco qui:
-
La soluzione
raisebox
.Grazie a Jimi Oke per le dita veloci. Questo è arrivato per primo ed è quello che mi piace particolarmente per lapplicazione che avevo in mente. È facile come:
\raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {8}}}
Nientaltro. Sul fronte della semplicità, non cè niente di meglio di questo.Solido 5/5 , poiché non sono necessari pacchetti aggiuntivi e la definizione ingombrante può essere banalmente astratta in una riga
\def
.Dal punto di vista della flessibilità, questa soluzione è piuttosto bassa, poiché non hai controllo sulla dimensione del cerchio o sui parametri (sono sicuro che alcuni hacker di TeX lo farebbero dimostrami che ho torto, ma per amore di $ DEITY , risparmiaci questi abomini). 2/5 è ben meritato qui. {1}
Il problema della precisione è soggettivo come sempre, ma avresti bisogno di giocare con le distanze verticali per ottenere il giusto ™ per il carattere tipografico che hanno selezionato. 2/5 .
-
Il
ding
-y soluzione.Questo è venuto da TH. che suggerisce di usare alcuni glifi di simboli predefiniti. Il documento onnisciente simboli-a4 dice che Lunico vero modo per farlo è usare:
\usepackage{pifont} \ding{172}--\ding{181} % seriffed fonts \ding{192}--\ding{201} % sans-seriffed fonts
O anche la nomenclatura Go board:
\usepackage{igo} \whitestone{1}--\whitestone{99}
Sul versante della semplicità, questo valore è 4,5 / 5 , anche se sono riluttante a dargli un 5 diritto a causa dei pacchetti extra coinvolti.
Questo non è affatto flessibile. Se non ti piacciono i glifi, sei da solo. 1/5 .
I glifi stessi sono ben progettati, come ci si dovrebbe aspettare, e i numeri sono visivamente ben allineato con i cerchi. Anche se hai un carattere tipografico con uno stile distinto, il carattere dei numeri potrebbe non adattarsi bene al testo.
-
Lobbligatorio
tikz
soluzione.Ahh, cè sempre quello, no. Ciò è dovuto 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, “non mi piace
tikz
(lo so , Dovrei impararlo uno di questi giorni), quindi per me sarebbe un uso una tantum del pacchetto, cosa che vorrei evitare. Non posso “dare più di 2/5 qui, matikz
fanboiz (e galz!) dovrebbe aumentarlo fino a 4/5 .As per quanto riguarda la flessibilità: questo è il vero affare. Stefan ha dimostrato anche come usare i simboli cerchiati con elenchi enumerati, di tutte le cose. Sono certamente possibili diverse forme di cornice, con vari gradi di adattamento attorno al glifo. Indiscutibile 5/5 .
Lallineamento della linea di base è di primordine senza giocare con alcune regolazioni manuali, il che è piuttosto carino. La spaziatura intorno al simbolo sembra corretta, anche se nel testo a scorrimento libero il cerchio dovrebbe preferibilmente avere una misura più stretta attorno al numero, cosa che può essere ottenuta giocando con il parametro
inner sep
in la definizione del comando. 5/5 qui. -
pict2e
/picture
soluzioneUnaggiunta tardiva di Herbert propone di utilizzare alcune primitive di base dai pacchetti
picture
epict2e
. Ecco:\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}}}}
Sul fronte della semplicità, questo non va molto bene. Sembra un po contorto, anche se decisamente comprensibile dopo averlo studiato, e usa due pacchetti aggiuntivi. 2/5 qui è un punteggio ragionevole.
La flessibilità non è del tutto costruita- in, ma è certamente possibile. Il raggio del cerchio può essere regolato modificando il fattore
1.5
e si può giocare con laggiustamento della linea di base. 3.5 / 5 .Così comè in questa definizione, la linea di base del testo circostante è tangente al cerchio invece di essere allineata con il cerchio base numerica. Potrebbe essere utile in alcune circostanze, ma i numeri sembrano un po fuori luogo in questo modo. È possibile ottenere risultati migliori con alcuni calcoli aggiuntivi quando si posizionano le scatole e un 3.5 / 5 viene fornito qui per reflec t questo potenziale.
-
Laltra
tikz
soluzioneMatthew Leingang obbligatoria e morbusg si sono cimentati in questo, e sebbene i loro sforzi siano certamente apprezzati, penso che la soluzione di Stefan sia più semplice. Sono grato per lo sforzo (e la tua umiltà) e ho votato positivamente entrambe le tue risposte.
Punteggio finale:
- Semplicità :
raisebox
- Flessibilità :
tikz
- Precisione : pari a
tikz
eding
Complessivamente: tikz
, senza esitazione ( acclamazioni da parte del pubblico, cappelli gettati, fazzoletti agitati e tutto il resto).
Infine, un po di codice di prova:
\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} Se qualcuno decide di scrivere una cosa del genere, fammelo sapere e lo includerò in questa risposta senza costi aggiuntivi, ma tieni presente che il post verrà successivamente contrassegnato con \textcircled{18+}
per proteggere i deboli di cuore.
Commenti
- eccellente sintesi, ben fatto! Post come questo rendono questo sito utile.
- @Yiannis ‘ è passato un po di tempo da quando ho pubblicato la domanda, ma ho trovato il tempo solo ora per perfezionare il riassunto. Spero che possa essere utile a persone con lo stesso problema.
- Dici, ” La spaziatura attorno al simbolo sembra corretta, anche se in modalità free-running testo il cerchio dovrebbe preferibilmente avere una misura più stretta attorno al numero. ” Questo problema può essere facilmente risolto cambiando
inner sep=2pt
ininner sep=1pt
nella\circled
definizione del comando. - @Matt: Certo – la mia intenzione qui era di sottolineare un problema estetico, ma immagino Non ero ‘ abbastanza chiaro su questo. Le informazioni su ciò che deve essere modificato sono ora menzionate nel post. Grazie.
- @MartinTapankov Il problema è risolto con raisebox a condizione che ogni chiamata sia preceduta da \ protect.
Rispondi
La soluzione più rapida sarebbe utilizzare il comando \raisebox
. Ci ho “giocato un po , e sembra che abbassando il testo di 0.9pt si collochi la cifra approssimativamente al centro:
\textcircled{\raisebox{-0.9pt}{8}}
Potresti giocare con esso per ottenere il centro assoluto ma è sicuramente tra 0,9 e 1pt. Ho avuto lidea qui . Sembra che il comando \textcircled
funzioni meglio per il testo! Tuttavia, questo dovrebbe risolvere il tuo problema.
Commenti
- Questo ‘ cambierà la linea di base dei numeri che potrebbero non essere desiderabili. Ma forse con un
\raisebox
esterno per aumentare il numero intero cerchiato, le linee di base potrebbero essere mantenute. - Mais oui! Avrei dovuto pensarci io stesso. Grazie! ‘ aspetterò qualche altro suggerimento prima di contrassegnarlo come accettato.
- @TH. Vero, ma questo ‘ non ha importanza per me: i numeri non compaiono nel testo a scorrimento libero, ma sono piuttosto le intestazioni delle colonne della tabella o utilizzati per letichettatura.
- Ma, in realtà, loutput
\textcircled
ha già una linea di base inferiore con o senza\raisebox
. Quindi, se lautore preferisce tutto flush, allora dovrebbe sceglierepifont
. Con un\raisebox
esterno, il massimo è un aumento di 0,5 pt, che riporta il cerchio alla sua posizione originale, che però non è allineata con il testo. Alzando tutto oltre 0,5 pt inizia a spostare il numero, non il cerchio, annullando gli sforzi iniziali. Quindi, se lautore vuole un buon\textcircled
, allora qui ‘ quello:\raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {8}} }
. In realtà è abbastanza buono. - @Martin: potresti anche ricevere un suggerimento su TikZ. 😉
Risposta
morbusg già menzionato che alcuni caratteri hanno numeri cerchiati come glifi Unicode e hanno mostrato come incorporarli direttamente. Alcuni caratteri forniscono un interfaccia più intuitiva per accedere ai numeri, ad es. Linux Libertine e Junicode. Ovviamente, questo significa che stiamo deviando dalla tua esigenza di utilizzare Computer Modern. Il vantaggio di questi numeri Unicode presumibilmente è che sono stati creati da un designer di caratteri, quindi non dovrebbe esserci alcuna necessità di messa a punto.
Ecco una semplice prova di concetto (devi anche avere il junicode
pacchetto installato):
\documentclass{article} \usepackage{fontspec} \usepackage{libertine} \begin{document} \libertineGlyph{uni2460} \libertineGlyph{uni24F5} \libertineGlyph{uni2776} {\fontspec[Ligatures=Discretionary]{Junicode}[1] [[1]] <1>} \end{document}
Questi metodi sono descritti nelle rispettive documentazioni.
Ecco un modo ancora più comodo per accedere a questi gruppi di numeri. I numeri doppiamente cerchiati sono (per Unicode) disponibili da 1 a 10, gli altri da 0 a 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}
Commenti
- Penso che questo non funzioni con
pdflatex
. - @moose Sì .. Devo controllare se il primo bit di codice funziona con lattuale
libertine
(ma poi pdfLaTeX dovrebbe andare bene), il secondo bit è solo XeLaTeX / LuaLaTeX, dovrei inserirlo anche nella risposta.
Risposta
PGF è eccessivo per questa applicazione, ma se lhai già caricato, puoi 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}
Come puoi vedere, cè dello spazio extra intorno ai cerchi rispetto a \textcircled
ma non è male.
modifica pre-post: vedo Stefan e Morbusg mi hanno battuto sul tempo. Vabbè.
Commenti
- Penso che un processo esterno sia davvero eccessivo per qualcosa che può essere fatto allinterno di LaTeX. Puoi costruirlo semplicemente come \ newcommand {\ Ring} [1] {\ raisebox {-1pt} {\ begin {tabular} {@ {} c @ {}} {\ small # 1} \ [ -11.5pt] \ BigCircle \ end {tabular}}}. Lauto-regolazione delle dimensioni è lasciata come esercizio al lettore 🙂
- Peter, quale processo esterno?
- @ u0b34a0f6ae: Penso che Peter si riferisca al fatto che
tikz
utilizza una serie di comandi\special
aggiunti dopo che TeX ha elaborato linput. Quindi è ‘ “esterno” al normale sistema di digestione TeX.
Risposta
Da symbols.pdf, sembra che pifont
possa fare quello che vuoi da \ding{172}
a \ding{181}
o da \ding{192}
a \ding{201}
.
Oppure igo
pacchetto da \whitestone{1}
a \whitestone{99}
, sebbene sia pensato per la composizione di schede Go.
Sembra che la soluzione sia stata trovata, ma qui “un semplice confronto.
\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}
Commenti
- Questa è unottima soluzione. Tuttavia, i pifont sono piuttosto schiacciati, rispetto alloutput di
\textcircled
. Il vantaggio, però, è che i pifont sono allineati con il testo, il che potrebbe essere una buona cosa per lautore. - @TH: Nice. Cosa fa il pacchetto textcomp?
- @Jimi: pensavo fosse necessario per
\textcircled
. Ho sbagliato. (Stavo guardando la Tabella 17 di Symbols.pdf e ho notato chetextcomp
è richiesto per\newtie
, ma non lo ero ‘ non leggo abbastanza attentamente.) ‘ ho aggiornato il codice. - @PatrickT Grazie per limmagine. È ‘ una buona aggiunta.
Risposta
Il mathdesign
il pacchetto definisce \figurecircled
che ha una spaziatura migliore per i numeri rispetto a \textcircled
sì.
Il pacchetto mathdesign non è compatibile con amsfonts
e amssymb
ma se stai comunque usando un font mathdesign, non è un problema.
Commenti
- Questa risposta è stata rifiutata? Chi ha fatto questo potrebbe spiegare perché pensa che questa sia una cattiva soluzione al problema?
- Non ti ho ‘ downvote ma ho ricevuto un errore con un semplice file di prova. Potete fornire un MWE? Il mio messaggio di errore:
! 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!
Risposta
@Stefan ” La risposta è buona, tuttavia, lho migliorata.
In primo luogo, se \circled{1}
e \circled{10}
vengono messi insieme , i due cerchi non avranno le stesse dimensioni, quindi ho aggiunto un parametro facoltativo al comando \circled
. Il parametro facoltativo è stato riqualificato come segnaposto per assicurarmi che questi cerchi appaiano nel stessa dimensione.
Inoltre, poiché “ho utilizzato \ifblank
, fornito dal pacchetto etoolbox
, per verificare se è stato fornito il parametro facoltativo, Ho usato \robustify
per rendere robusto il comando. Questo ha aggirato lo svantaggio dellutilizzo di \DeclearRobustCommand
, menzionato da @Stefan in un commento alla sua risposta. Pertanto, il \protact
non è più necessario.
Codice:
\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}
Risultato:
Commenti
- conosci lopzione
minimum size
per i nodi? - @percusse Scusa, ma Non ‘ ti capisco.
- Puoi definire una dimensione minima per i nodi del cerchio senza scatola o fantasma con dimensioni uniformi.
- @percusse Questo ‘ è un buon suggerimento , tuttavia, ‘ non credo che tu abbia capito lidea nel mio post. Ho progettato questo parametro opzionale per uniformare la dimensione dei cerchi, poiché cerchi di dimensioni diverse che sono allineati insieme daranno un aspetto ostile.
Risposta
Ancora più semplice:
\textcircled{\small{2}}
o
{\large \textcircled{\small 2}}
o
{\Large \textcircled{\normalsize 2}}
[ed. Segletes, fornendo MWE & immagine]
\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}
Commenti
- Questo potrebbe funzionare quando il cerchio non è circondato da testo e la dimensione del carattere del numero non è un problema, ma ‘ preferisco utilizzare una delle altre soluzioni invece.
- Possiamo invertire i colori allinterno del cerchio?
Rispondi
questo la risposta è stata convertita in un pacchetto su CTAN: https://ctan.org/pkg/circledsteps
Le risposte qui sono tutte bello, e soprattutto quello tikz
è molto configurabile. Ma ha un problema: non puoi “usarlo in altri tikzpicture
in modo sicuro. Quindi ho unito un paio di cose e ho implementato questo:
\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}
Commenti
- Sembra fantastico! (+1)
Rispondi
con i comandi immagine predefiniti:
\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}
Risposta
Con Plain (ci siamo imbattuti per caso e si è ricordato di questa domanda):
\def\circled#1{{\ooalign{\hfil\lower.1ex\hbox{#1}\hfil\crcr\Orb}}} $\circled1 \circled2 \circled3 \ldots \circled9 \quad \circled{23}$ \bye
Con XeTeX:
\font\circled="Arial Unicode MS" {\circled ➀} Didn"t occur to me {\circled ➄} earlier that some fonts have {\circled ➇} these. \bye
O forse 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 =” Hosted by imgur.com “/>
Dannazione, Stefan mi ha battuto con uno più carino.
Risposta
Ecco una \pdfliteral
soluzione. Funziona solo per numeri singoli.
\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
Commenti
- Perché le trasformazioni delle coordinate?
- @percusse In realtà, ho appena copiato il codice da qui e lho modificato un po . Se puoi fornire risorse per saperne di più sulla codifica PDF, sarei davvero felice.
- In realtà è PostScript ma PDF supporta anche molti oggetti grafici. Quindi ‘ è un po complicato capire linsieme di tutti gli operatori supportati in PDF. Ma almeno per iniziare a leggere questo codice puoi utilizzare la guida di riferimento adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/… . Anche nelle specifiche ISO (tabella 59 in adobe.com/devnet/pdf/pdf_reference.html ) puoi riconoscere gli operatori TikZ mappati sul frontend;). Il problema iniziale da comprendere è impostare il riquadro di delimitazione, il resto è la solita notazione PS.
Risposta
Utilizzo Pacchetto pifont e simboli da \ding{172}
a \ding{211}
puoi facilmente avere ottimi numeri cerchiati, ma se vuoi cerchiati numeri maggiori di 10 abbiamo un problema. Come mostrato da altri utenti di stackexchange qui, possiamo risolvere il problema se i numeri non sono troppo grandi, ma le cose diventano difficili (codici LaTeX complessi) e possiamo avere problemi se stiamo scrivendo allinterno di un testo (se il cerchio diventa grande, LaTeX può essere costretti ad allargare lo spazio tra le righe, o forse a sovrapporre un cerchio su linee adiacenti superiore e inferiore): le cose sono un po più semplici se vogliamo solo il numero cerchiato in una lista di elementi. Questa mancanza di flessibilità potrebbe essere in alcuni casi fastidiosa. Una soluzione ragionevole sembra utilizzare il pacchetto tcolorbox : dopo i tentativi ho scoperto che dobbiamo semplicemente aggiungere nel preambolo questo
\usepackage{tcolorbox} \newcommand{\ciao}[1]{{\setlength\fboxrule{0pt}\fbox{\tcbox[colframe=black,colback=white,shrink tight,boxrule=0.5pt,extrude by=1mm]{\small #1}}}}
e chiamare nel documento il comando \ ciao quando vogliamo un numero “cerchiato” (esempio: \ ciao {12} “cercherà” il numero 12). A proposito, luso di fbox nella riga di preambolo è importante perché senza di esso, i box arrotondati potrebbero sporgere dalla linea a sinistra oa destra quando sono al margine della riga: questo sarebbe molto antiestetico.
Riprendendo, vedo in questa soluzione 3 pro e 1 contro:
- pros : codice semplice, buon funzionamento anche allinterno di un testo, flessibilità (anche numeri grandi & nel caso in cui possiamo facilmente giocare con bordi o colori: vedi 0.5pt o nero & bianco nella riga di preambolo).
- cons : non abbiamo cerchi ma una casella arrotondata, ma trovo che sia un ragionevole compromesso.
Un esempio di applicazione di questo metodo è
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.
che restituisce
tieni presente che i numeri non sporgono e che lo spazio tra le righe è sempre lo stesso: non importa se abbiamo un numero o meno. In breve, questi numeri quasi cerchiati funzionano molto bene anche se sono allinterno di un testo.
\textcircled
?