Goede manier om \ tekstcirkelvormige getallen te maken?

Deze vraag leidde tot een nieuw pakket:
circledsteps

Ik “probeer een paar mooie getallen in een cirkel te maken, met het simpele commando:

\textcircled{1} 

De cirkel is echter verticaal verkeerd uitgelijnd met het nummer en ziet er wat slordig uit:

alt-tekst

Eventuele suggesties hoe kan Ik pas de verticale uitlijning aan zodat de getallen meer gecentreerd lijken ten opzichte van de cirkels? Of, als dat geen optie is, welke andere manieren zijn dan mogelijk om dezelfde resultaten te bereiken?

Ik zal die alleen gebruiken voor getallen, en op heel weinig plaatsen, dus handmatige aanpassing per glyph is een optie.

Ik “gebruik pdfLaTeX met Computer Modern, als dat er toe doet.

Reacties

  • Heb hier twee goede antwoorden, voor minder dan 30 minuten utes (jullie zijn snel!). Ik ‘ zal waarschijnlijk een dezer dagen een community-wiki-antwoord maken met een samenvatting van alle opties, misschien komen er in de tussentijd nog andere oplossingen.
  • I ‘ m slaapgebrek, dat ‘ is waarom!
  • Welk pakket biedt \textcircled?
  • @Matthew: Het lijkt ingebouwd te zijn met LaTeX. Werkt direct uit de doos.
  • Je zou Unicode kunnen gebruiken. U + 2460-2473 voor 1 tot 20, U + 24EA voor 0, U + 3251-325F voor 21-35, en U + 32B1-32BF voor 36-50.

Answer

Hier “sa TikZ-oplossing:

\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-tekst

Het is maar een knooppunt. TikZ-opties worden gebruikt om de basislijn uit te lijnen, de grootte aan te passen en de cirkelvorm te krijgen. U bent vrij om verdere opties te kiezen met betrekking tot grootte of cirkeldikte (optie thick). Er is meer: u kunt bijvoorbeeld zelfs de knooppunten een naam geven met een ander argument om ze met pijlen te verbinden later.

Als iemand het bijvoorbeeld wil gebruiken voor een opgesomde lijst, is het gemakkelijk maar moet het beschermd worden:

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

alt text

Reacties

  • Mooi voorbeeld! Ik heb in het verleden problemen gehad met TikZ-voorbeelden inline, maar nu zie ik dat dit wordt opgelost door baseline=(char.base). Cool.
  • @Stefan: misschien moet je \newcommand door \DeclareRobustCommand, zodat de \protect niet meer nodig is, wat gebruiksvriendelijker is.
  • Dan moet je \ newcommand gebruiken om een leeg commando te declareren en dan \ DeclareRobustCommand gebruiken. Op die manier zal een bestaand commando een foutmelding geven.
  • @LuisFelipeVillavicencioLopez Zeker! Reacties zijn niet het beste voor codediscussies. Stel misschien een nieuwe vraag, of laat ‘ s praten in de LaTeX-community waar ik dagelijks post.
  • Dit is leuk, maar het probleem is dat het ‘ niet kan worden gebruikt in een \tikzpicture — zoals, voor bijvoorbeeld een knooppunttekst of een label. Is er een oplossing voor een ” universele ” mooie omcirkelde getallen? Raadpleeg voor referentie tex.stackexchange.com/questions/496348/…

Antwoord

Ik was aangenaam verrast hoeveel mensen besloten het eens te proberen, en er kwamen veel interessante oplossingen uit. Volgens de traditie zal dit antwoord een gemeenschapswiki zijn en alle voorgestelde oplossingen samenvatten en vergelijken.


Hierbij stel ik drie verschillende evaluatiecriteria voor, elk beoordeeld van 1 tot 5:

  • Eenvoud . Dit is een maatstaf voor hoe gemakkelijk het is om de voorgestelde oplossing te gebruiken. Punten afgetrokken voor het gebruik van aanvullende pakketten, of het definiëren van iets anders dan een eenvoudige gemaksmacro.
  • Flexibiliteit . Dit omvat voornamelijk hoe gemakkelijk het is om dit in andere contexten te gebruiken, in dit geval verschillende framevormen, -afmetingen en -diktes.
  • Nauwkeurigheid . Simpel gezegd, hoe esthetisch de oplossing eruitziet, in het bijzonder hoe goed de glyph gecentreerd is in de cirkel, en hoe hij past rondom vrijlopende tekst.

Hier gaan we:

  1. De raisebox oplossing.

    Met dank aan Jimi Oke voor de snelle vingers. Dit kwam als eerste binnen en is degene die ik vooral leuk vind voor de toepassing die ik in gedachten had. Het komt zo eenvoudig als:

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

    Niets meer dan dat. Op het vlak van eenvoud wordt het niet beter dan dit.Solide 5/5 , aangezien er geen extra pakketten nodig zijn en de logge definitie triviaal kan worden geabstraheerd in een oneliner \def.

    Wat betreft flexibiliteit scoort deze oplossing vrij laag, aangezien je geen controle hebt over de cirkelgrootte of parameters (ik weet zeker dat sommige TeX-hackers bewijs dat ik ongelijk heb, maar voor de liefde van $ DEITY , bespaar ons zulke gruwelen). 2/5 is hier welverdiend. {1}

    Het nauwkeurigheidsprobleem is zoals altijd subjectief, maar je “zou moeten spelen met de verticale afstanden om het precies goed ™ te krijgen voor het lettertype dat je hebt hebben geselecteerd. 2/5 .

  2. De ding -y oplossing.

    Dit kwam binnen van TH. die suggereert om een aantal voorgedefinieerde symboolglyphs te gebruiken. Het alwetende symbol-a4-document zegt dat de enige echte manier om het te doen is door te gebruiken:

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

    Of zelfs de Go-bordnomenclatuur:

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

    Aan de eenvoudzijde, dit scoort op 4.5 / 5 , hoewel ik terughoudend ben om het een straigt 5 te geven vanwege de extra pakketten die erbij betrokken zijn.

    Dit is helemaal niet flexibel. Als je de glyphs niet leuk vindt, sta je er alleen voor. 1/5 .

    De glyphs zelf zijn goed ontworpen, zoals je zou verwachten, en de cijfers zijn visueel goed uitgelijnd met de cirkels. Hoewel als u een lettertype met een aparte stijl heeft, het lettertype van de cijfers mogelijk niet goed past bij de tekst.

  3. Het verplichte tikz oplossing.

    Ahh, dat is er altijd, nietwaar. Dit komt door 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} 

    Persoonlijk “m not in tikz (ik weet , Zou ik het een dezer dagen moeten leren), dus hiermee zou ik een eenmalig gebruik van het pakket voor mij zijn, wat ik zou willen vermijden. Ik kan “niet meer geven dan 2/5 hier, maar de tikz fanboiz (en galz!) zou dit helemaal naar 4/5 moeten brengen.

    Zoals wat betreft flexibiliteit: dit is de real deal. Stefan heeft zelfs gedemonstreerd hoe de omcirkelde symbolen met opgesomde lijsten moeten worden gebruikt, van alle dingen. Verschillende framevormen zijn zeker mogelijk, met verschillende mate van pasvorm rond de glyph. Onbetwistbaar 5/5 .

    De uitlijning van de basislijn is uitstekend zonder te spelen met wat handmatige aanpassingen, wat best prettig is. De afstand rond het symbool ziet er goed uit, hoewel in vrijlopende tekst de cirkel bij voorkeur strakker rond het getal moet passen, wat kan worden bereikt door te spelen met de parameter inner sep in de opdrachtdefinitie. 5/5 hier.

  4. pict2e / picture oplossing

    Een late toevoeging door Herbert stelt voor om enkele basisprimitieven te gebruiken van de picture en pict2e pakketten. Hier geldt:

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

    Op het vlak van eenvoud klopt dit niet al te goed. Het ziet er een beetje ingewikkeld uit, hoewel zeker begrijpelijk na het bestuderen, en gebruikt twee extra pakketten. 2/5 is hier een redelijke score.

    Flexibiliteit is niet helemaal ingebouwd- in, maar is zeker mogelijk. De cirkelradius kan worden aangepast door de 1.5 -factor te wijzigen, en de basislijnaanpassing kan worden afgespeeld. 3.5 / 5 .

    Zoals het er in deze definitie uitziet, raakt de basislijn van de omringende tekst de cirkel in plaats van te worden uitgelijnd met de omcirkelde nummerbasis. Dit kan in sommige omstandigheden wenselijk zijn, maar de cijfers zien er op deze manier een beetje misplaatst uit. Betere resultaten zijn haalbaar met wat aanvullende berekeningen bij het plaatsen van de vakken, en een 3.5 / 5 wordt hier gegeven aan reflec dit potentieel.

  5. De andere verplichte tikz oplossing

    Matthew Leingang en morbusg probeerden hun hand hierin, en hoewel hun inspanningen zeker op prijs worden gesteld, vind ik Stefan s oplossing eenvoudiger. Ik ben dankbaar voor de moeite (en je nederigheid), en ik heb beide antwoorden positief gestemd.

Eindscore:

  • Eenvoud : raisebox
  • Flexibiliteit : tikz
  • Nauwkeurigheid : gebonden tussen tikz en ding

Algemeen: tikz, zonder aarzeling ( toejuiching van het publiek, hoeden gegooid, zakdoeken zwaaien en zo).

Eindelijk een testcode:

\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} Als iemand doet besluit om zoiets te schrijven, laat het me weten en ik zal het zonder extra kosten in dit antwoord opnemen, maar houd er rekening mee dat het bericht vervolgens wordt gemarkeerd als \textcircled{18+} om bangeriken te beschermen.

Reacties

  • uitstekende samenvatting, goed gedaan! Berichten zoals deze maken deze site de moeite waard.
  • @Yiannis Het ‘ is enige tijd geleden dat ik de vraag heb gepost, maar ik heb zojuist alleen tijd gevonden om te verbeteren de samenvatting. Ik hoop dat het nuttig zal zijn voor mensen met hetzelfde probleem.
  • U zegt: ” De ruimte rond het symbool ziet er goed uit, hoewel in vrijloop tekst moet de cirkel bij voorkeur strakker rond het getal passen. ” Dit is eenvoudig te verhelpen door inner sep=2pt te wijzigen in inner sep=1pt in de \circled opdrachtdefinitie.
  • @Matt: Natuurlijk – mijn bedoeling hier was om op een esthetisch probleem te wijzen, maar ik denk Ik was daar niet ‘ niet helemaal duidelijk over. De informatie over wat er moet worden gewijzigd, wordt nu vermeld in de post. Bedankt.
  • @MartinTapankov Het probleem is opgelost met raisebox op voorwaarde dat elke oproep wordt voorafgegaan door \ protect.

Answer

De snelste oplossing zou zijn om het \raisebox commando te gebruiken. Ik heb er een beetje mee gespeeld, en het lijkt erop dat door de tekst met 0,9 pt te verlagen het cijfer ongeveer in het midden komt te staan:

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

Je zou kunnen spelen ermee om het absolute centrum te krijgen, maar het is zeker tussen 0.9 en 1pt. Ik heb het idee hier . Het lijkt erop dat het \textcircled commando het beste werkt voor tekst! Maar hoe dan ook, dit zou je probleem moeten oplossen.

Opmerkingen

  • Dat ‘ gaat veranderen de basislijn van de cijfers die misschien niet wenselijk zijn. Maar misschien kunnen de basislijnen worden gehandhaafd met een buitenste \raisebox om het hele omcirkelde getal te verhogen.
  • Mais oui! Ik had hier zelf aan moeten denken. Bedankt! Ik ‘ wacht even op wat meer suggesties, voordat ik dit als geaccepteerd markeer.
  • @TH. Dat is waar, maar dat maakt ‘ niet uit voor mij – de cijfers verschijnen niet in de vrij lopende tekst, maar zijn eerder kopteksten voor tabelkolommen of worden gebruikt voor labels.
  • Maar eigenlijk heeft de \textcircled -uitvoer al een lagere basislijn met of zonder de \raisebox. Dus als de auteur er de voorkeur aan geeft alles door te spoelen, dan moet hij voor pifont kiezen. Met een buitenste \raisebox is het maximum een verhoging van 0,5 pt, waarmee de cirkel terugkeert naar zijn oorspronkelijke positie, die echter niet gelijk ligt met de tekst. Door alles boven 0,5 pt te verhogen, begint het aantal te verschuiven, niet de cirkel, waardoor de aanvankelijke inspanningen teniet worden gedaan. Dus als de auteur een goede \textcircled wil, dan is hier ‘ een: \raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {8}} } . Dit is eigenlijk best goed.
  • @Martin: misschien krijg je ook een TikZ-suggestie. 😉

Answer

morbusg al genoemd dat sommige lettertypen getallen hebben omcirkeld als Unicode-glyphs en lieten zien hoe ze rechtstreeks konden worden ingesloten. Sommige lettertypen bieden een meer gebruikersvriendelijke interface voor toegang tot de cijfers, bijv. Linux Libertine en Junicode. Dit betekent uiteraard dat we afwijken van uw vereiste om Computer Modern te gebruiken. Het voordeel van deze Unicode-nummers is vermoedelijk dat ze zijn gemaakt door een lettertypedesigner, dus er zou geen fijnafstelling nodig moeten zijn.

Hier is een eenvoudige proof-of-concept (je moet ook het junicode pakket geïnstalleerd hebben):

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

uitvoer

Deze methoden worden beschreven in de respectievelijke documentatie.

Hier is een nog comfortabelere manier om toegang te krijgen tot deze sets getallen. De dubbel omcirkelde nummers zijn (per Unicode) beschikbaar van 1 tot 10, de andere van 0 tot 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} 

uitvoer

Opmerkingen

  • Ik denk dat dit niet werkt met pdflatex.
  • @moose Ja .. ik moet controleren of het eerste codebit werkt met het huidige libertine helemaal (maar pdfLaTeX zou in orde moeten zijn), het tweede bit is alleen XeLaTeX / LuaLaTeX, ik zou dat ook in het antwoord moeten vermelden.

Answer

PGF is overdreven voor deze ene applicatie, maar als je het al hebt geladen, kun je het gebruiken:

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

fragmentuitvoer

Zoals je kunt zien is er wat extra ruimte rond de cirkels in vergelijking met \textcircled maar het is niet slecht.

pre-post bewerking: ik zie dat Stefan en morbusg me tot in de puntjes hebben verslagen. Nou ja.

Reacties

  • Ik denk dat een extern proces inderdaad overdreven is voor iets dat binnen LaTeX kan worden gedaan. Je kunt het net zo eenvoudig construeren als \ newcommand {\ Ring} [1] {\ raisebox {-1pt} {\ begin {tabular} {@ {} c @ {}} {\ small # 1} \ [ -11.5pt] \ BigCircle \ end {tabular}}}. Het automatisch aanpassen van de afmetingen wordt aan de lezer overgelaten als een oefening 🙂
  • Peter, welk extern proces?
  • @ u0b34a0f6ae: Ik denk dat Peter verwijst naar het feit dat tikz gebruikt een aantal \special commandos die worden toegevoegd nadat TeX de invoer heeft verwerkt. Dus het ‘ is “extern” voor het normale TeX-verteringssysteem.

Antwoord

Van symbols.pdf lijkt het erop dat pifont kan doen wat je wilt met \ding{172} tot en met \ding{181} of \ding{192} tot en met \ding{201}.

Of de igo pakket met \whitestone{1} tot en met \whitestone{99}, hoewel dat bedoeld is voor het zetten van Go-borden.

Het klinkt alsof de oplossing is gevonden, maar hier “een eenvoudige vergelijking.

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

voer de beschrijving van de afbeelding hier in

Opmerkingen

  • Dit is een geweldige oplossing. De pifonts zijn echter nogal geplet, vergeleken met de \textcircled -uitvoer. Het voordeel is echter dat de pifonts gelijk lopen met de tekst, wat een goede zaak kan zijn voor de auteur.
  • @TH: Nice. Wat doet het textcomp-pakket?
  • @Jimi: Ik dacht dat het nodig was voor \textcircled. Ik had het mis. (Ik keek naar Tabel 17 van Symbols.pdf en daarin staat dat textcomp vereist is voor \newtie, maar ik was niet ‘ Ik lees niet goed genoeg.) Ik ‘ heb de code bijgewerkt.
  • @PatrickT Bedankt voor de afbeelding. Het ‘ is een goede toevoeging.

Antwoord

De mathdesign pakket definieert \figurecircled met een betere spatiëring voor getallen dan \textcircled wel.

Het mathdesign-pakket is niet compatibel met amsfonts en amssymb maar als je toch een mathdesign-lettertype gebruikt, is dat geen probleem.

Opmerkingen

  • Is dit antwoord weggestemd? Kan degene die dit heeft gedaan uitleggen waarom ze denken dat dit een slechte oplossing voor het probleem is?
  • Ik heb je ‘ niet naar beneden gestemd, maar ik kreeg wel een foutmelding met een simpele testbestand. Kunt u een MWE verstrekken? Mijn foutmelding: ! 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!

Antwoord

@Stefan ” s antwoord is goed, maar ik heb zijn antwoord verbeterd.

Ten eerste, als \circled{1} en \circled{10} samen worden geplaatst , zullen de twee cirkels niet dezelfde grootte hebben, dus heb ik een optionele parameter toegevoegd aan het \circled commando. De optionele parameter is opnieuw ingedeeld als een tijdelijke aanduiding om ervoor te zorgen dat deze cirkels verschijnen in de dezelfde grootte.

Bovendien, aangezien ik “d \ifblank heb gebruikt, die wordt geleverd door pakket etoolbox, om te controleren of de optionele parameter is opgegeven, Ik heb \robustify gebruikt om het commando robuust te maken. Dit omzeilde het nadeel van het gebruik van \DeclearRobustCommand, genoemd door @Stefan in een commentaar op zijn antwoord. De \protact is dus niet langer nodig.


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} 

Resultaat:

Reacties

  • ken je de optie minimum size voor nodes?
  • @percusse Sorry, maar Ik ‘ begrijp je niet.
  • U kunt een minimumgrootte definiëren voor cirkelknooppunten zonder kader of fantoom met uniforme grootte.
  • @percusse That ‘ is een goede suggestie maar ik denk niet dat ‘ niet begrijpt wat het idee in mijn bericht is. Ik heb deze optionele parameter ontworpen om de grootte van de cirkels gelijk te maken, aangezien cirkels van verschillende grootte die op elkaar zijn uitgelijnd, een onvriendelijk uiterlijk geven.

Antwoord

Nog eenvoudiger:

\textcircled{\small{2}} 

of

{\large \textcircled{\small 2}} 

of

{\Large \textcircled{\normalsize 2}} 

[ed. Segletes, met MWE & afbeelding]

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

LaTeX-weergave van het bovenstaande .tex-bestand

Opmerkingen

  • Dit zou kunnen werken als de cirkel niet omgeven is door tekst, en de lettergrootte van het nummer is geen probleem – maar ik ‘ gebruik liever een van de andere oplossingen in plaats daarvan.
  • Kunnen we de kleuren in de cirkel omkeren?

Beantwoord

dit antwoord is geconverteerd in een pakket op CTAN: https://ctan.org/pkg/circledsteps

De antwoorden hier zijn allemaal leuk, en vooral de tikz is enorm configureerbaar. Maar het heeft een probleem: je kunt het “niet veilig gebruiken in andere tikzpicture s. Dus heb ik een paar dingen samengevoegd en dit geïmplementeerd:

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

Gebruiksvoorbeeld

Reacties

  • Ziet er goed uit! (+1)

Antwoord

met de standaard afbeeldingopdrachten:

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

alt-tekst

Antwoord

Met Plain (kwam dit toevallig tegen en herinnerde zich deze vraag):

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

circlednums

Met XeTeX:

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

Of misschien met 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 =” Gehost door imgur.com “/>

Verdorie, Stefan versloeg me met een mooiere versie.

Antwoord

Hier is een \pdfliteral oplossing. Het werkt alleen voor enkele nummers.

\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 

voer de beschrijving van de afbeelding hier in

Reacties

  • Waarom de coördinatentransformaties?
  • @percusse Eigenlijk heb ik net code van hier gekopieerd en een beetje aangepast. Als u bronnen kunt verstrekken om meer te weten te komen over PDF-codering, zou ik erg blij zijn.
  • Het is eigenlijk PostScript, maar PDF ondersteunt ook veel grafische objecten. Het is dus ‘ een beetje omslachtig om de verzameling van alle operators die in PDF worden ondersteund te begrijpen. Maar om deze code te lezen, kunt u in ieder geval de referentiegids adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/ . Ook in de ISO-specificatie (tabel 59 in adobe.com/devnet/pdf/pdf_reference.html ) kun je de TikZ-operators herkennen die zijn toegewezen aan frontend;). Het eerste probleem dat je moet begrijpen is het instellen van het selectiekader, de rest is de gebruikelijke PS-notatie.

Antwoord

Gebruiken pifont pakket en symbolen van \ding{172} tot \ding{211} je hebt gemakkelijk uitstekende omcirkelde nummers, maar als je wilt omcirkeld getallen groter dan 10 hebben we een probleem. Zoals andere stackexchange-gebruikers hier hebben laten zien, kunnen we het probleem oplossen als getallen niet te groot zijn, maar het werd moeilijk (complexe LaTeX-codes) en we kunnen problemen hebben als we in een tekst schrijven (als de cirkel groot werd, kan LaTeX dat worden gedwongen om de ruimte tussen regels te vergroten, of misschien om de cirkel op aangrenzende bovenste en onderste regels te laten overlappen): dingen zijn een beetje eenvoudiger als we alleen een omcirkeld getal in een gespecificeerde lijst willen. Dit gebrek aan flexibiliteit kan in sommige gevallen hinderlijk zijn. Een redelijke oplossing lijkt het tcolorbox -pakket te gebruiken: na pogingen ontdekte ik dat we gewoon in de preambule dit

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

en roep in het document het commando \ ciao aan als we een “omcirkeld” nummer willen (voorbeeld: \ ciao {12} zal het nummer 12 “omcirkelen”). Overigens is het gebruik van fbox in de preambule-regel belangrijk, want zonder dit zou de afgeronde box uit de lijn aan de linkerkant of aan de rechterkant kunnen uitsteken als ze zich aan de rand van de lijn bevinden: dit zou erg onesthetisch zijn.

Om verder te gaan, zie ik in deze oplossing 3 voor- en 1 nadelen:

  • pros : eenvoudige code, werkt ook goed in een tekst, flexibiliteit (ook grote getallen & voor het geval we gemakkelijk kunnen spelen met randen of kleuren: zie 0.5pt of zwart & wit in de preambule).
  • nadelen : we hebben geen cirkels maar een ronde doos, maar ik vind dit een redelijk compromis.

Een voorbeeld van de toepassing van deze methode is

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. 

dat geeft

voer hier de afbeeldingsbeschrijving in

Houd er rekening mee dat nummers niet uitsteken en dat de ruimte tussen de regels altijd hetzelfde is: ongeacht of we een nummer hebben of niet. Kortom, deze bijna omcirkelde cijfers werken heel goed, zelfs als ze in een tekst staan.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *