Un buon modo per creare numeri con \ textcircled?

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:

alt text

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

  • Ho ricevuto due buone risposte qui, per meno di 30 minuti utes (ragazzi siete veloci!). ‘ probabilmente farò una risposta wiki della comunità che riassume tutte le opzioni uno di questi giorni, forse nel frattempo arriveranno altre soluzioni.
  • I ‘ m senza sonno, questo ‘ è perché!
  • Quale pacchetto fornisce \textcircled?
  • @Matthew: sembra essere integrato con LaTeX. Funziona immediatamente.
  • Potresti usare Unicode. U + 2460-2473 da 1 a 20, U + 24EA per 0, U + 3251-325F per 21-35 e U + 32B1-32BF per 36-50.

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} 

alt text

È 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} 

testo alternativo

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:

  1. 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 .

  2. 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.

  3. 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, ma tikz 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.

  4. pict2e / picture soluzione

    Unaggiunta tardiva di Herbert propone di utilizzare alcune primitive di base dai pacchetti picture e pict2e. 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.

  5. Laltra tikz soluzione

    Matthew 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 e ding

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 in inner 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 scegliere pifont. 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} 

output

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} 

output

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} 

output dello snippet

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} 

inserisci qui la descrizione dellimmagine

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 che textcomp è 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} 

Rendering LaTeX del file .tex sopra

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}  

Esempio di utilizzo

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} 

testo alternativo

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 

cerchiati

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 

inserisci qui la descrizione dellimmagine

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

inserisci qui la descrizione dellimmagine

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *