God måde at lave \ tekstcirklede tal på?

Dette spørgsmål førte til en ny pakke:
circledsteps

Jeg prøver at lave nogle flotte tal i en cirkel ved hjælp af den enkle kommando:

\textcircled{1} 

Cirklen er imidlertid forkert justeret lodret med tallet og ser lidt sjusket ud:

alt-tekst

Eventuelle forslag til hvordan kan Jeg justerer den lodrette justering, så tallene ser mere centreret ud til cirklerne? Eller hvis det ikke er en mulighed, hvilke andre måder at opnå de samme resultater er mulige?

Jeg bruger kun disse for tal og meget få steder, så manuel justering pr. tegn er en mulighed.

Jeg bruger pdfLaTeX med Computer Modern, hvis det betyder noget.

Kommentarer

  • Fik to gode svar her i mindre end 30 minutter ter (I er hurtige!). Jeg ‘ Jeg laver sandsynligvis et community-wiki-svar, der opsummerer alle muligheder en af disse dage, måske kommer nogle andre løsninger i mellemtiden.
  • I ‘ m søvnberøvet, at ‘ hvorfor!
  • Hvilken pakke giver \textcircled?
  • @Matthew: Det ser ud til at være indbygget i LaTeX. Fungerer ud af kassen.
  • Du kan bruge Unicode. U + 2460-2473 for 1 til 20, U + 24EA for 0, U + 3251-325F for 21-35 og U + 32B1-32BF for 36-50.

Svar

Her “er en TikZ-løsning:

\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

Det er bare en node. TikZ-indstillinger bruges til at justere basislinjen, til at justere størrelsen og for at få cirkelformen. Du er fri til at vælge yderligere muligheder med hensyn til størrelse eller cirkeltykkelse (mulighed thick). Der er mere: for eksempel kan du endda navngive noderne ved et andet argument for at forbinde dem med pile senere.

Hvis man f.eks. gerne vil bruge den til en opregnet liste, er det let, men skal beskyttes:

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

alt-tekst

Kommentarer

  • Sødt eksempel! Jeg har tidligere haft problemer med at bruge TikZ-eksempler inline, men nu kan jeg se, at det løses af baseline=(char.base). Cool.
  • @Stefan: måske skal du erstatte \newcommand af \DeclareRobustCommand, ligesom det ikke er nødvendigt med \protect, hvilket er mere brugervenligt.
  • Derefter skal man bruge \ newcommand til at erklære en tom kommandofist og derefter bruge \ DeclareRobustCommand. På den måde udsteder en eksisterende kommando en fejl.
  • @LuisFelipeVillavicencioLopez Sikker! Kommentarer er ikke det bedste til kodediskussioner. Send måske et nyt spørgsmål, eller lad ‘ s tale på LaTeX Community , hvor jeg skriver dagligt.
  • Dette er rart, men problemet er, at det kan ‘ t bruges inde i en \tikzpicture — som til f.eks. en nodetekst eller en etiket. Er der nogen løsning til et ” universal ” pæne cirkelnumre? Se reference tex.stackexchange.com/questions/496348/…

Svar

Jeg blev glædeligt overrasket over, hvor mange mennesker der besluttede at prøve det, og der kom mange interessante løsninger ud. Som tradition er dette svar community wiki og vil opsummere og sammenligne alle foreslåede løsninger.


Jeg foreslår hermed tre forskellige evalueringskriterier, hver klassificeret fra 1 til 5:

  • Enkelhed . Dette er et mål for, hvor let det er at bruge den foreslåede løsning. Point trukket for at bruge yderligere pakker eller definere andet end en simpel bekvemmelighed makro.
  • Fleksibilitet . Dette inkluderer primært hvor let det er at bruge dette i andre sammenhænge, i dette tilfælde forskellige rammeformer, størrelser og tykkelser.
  • Nøjagtighed . Kort sagt, hvor æstetisk tiltalende løsningen ser ud, især hvor godt glyf er centreret i cirklen, og hvordan den passer til frit løbende tekst.

Her går vi:

  1. raisebox -løsningen.

    Tak til Jimi Oke for de hurtige fingre. Dette kom først ind og er det, som jeg især kan lide for den applikation, jeg havde i tankerne. Det kommer så let som:

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

    Intet mere end det. På enkelhedsfronten bliver det ikke bedre end dette.Solidt 5/5 , da der ikke er behov for ekstra pakker, og den uhåndterlige definition kan trivielt abstraheres i en one-liner div id = “35aaf230bb”>

.

Fleksibelt set er denne løsning meget lav, da du ikke har kontrol over cirkelstørrelse eller parametre (jeg er sikker på, at nogle TeX-hackere ville bevis mig forkert, men for kærligheden til $ DEITY spar os sådanne afsky). 2/5 er velfortjent her. {1}

Nøjagtighedsproblemet er som altid subjektivt, men du skal lege med de lodrette afstande for at få det Just Right ™ til det skrifttype, du har har valgt. 2/5 .

  • ding -y-løsning.

    Dette kom ind fra TH. som antyder, at du bruger nogle foruddefinerede symboltegn. De alvidende symboler-a4-dokumentet siger, at den ene rigtige måde at gøre det på er at bruge:

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

    Eller endda Go-bordnomenklaturen:

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

    På enkelhedssiden priser dette på 4.5 / 5 , selvom jeg er tilbageholdende med at give den en lige 5 på grund af de ekstra pakker, der er involveret.

    Dette er slet ikke fleksibelt. Hvis du ikke kan lide glyferne, er du alene. 1/5 .

    Selve glyferne er godt designet, som man kan forvente, og tallene er visuelt godt justeret med cirklerne. Selvom du har en skrifttype med en særskilt stil, kan tallets skrifttype muligvis ikke passe ind i teksten.

  • Den obligatoriske tikz løsning.

    Ahh, der er altid det, er det ikke. Dette skyldes 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} 

    Personligt er jeg ikke interesseret i tikz , Jeg skulle lære det en af disse dage), så at gå med dette ville være en engangsbrug af pakken for mig, som jeg gerne vil undgå. Jeg kan ikke give mere end 2/5 her, men tikz fanboiz (og galz!) skal bumpe dette hele vejen til 4/5 .

    Som hvad angår fleksibilitet: dette er den virkelige aftale. Stefan demonstrerede endda, hvordan man bruger de cirkelformede symboler med opregnede lister af alle ting. Forskellige rammeformer er bestemt mulige med varierende grad af pasform omkring glyf. Ubestridelig 5/5 .

    Baselinejustering er i topklasse uden at lege med nogle manuelle justeringer, hvilket er ret rart. Afstanden omkring symbolet ser godt ud, selvom cirklen i fritløbende tekst helst skal have en tættere pasning omkring tallet, hvilket kan opnås ved at lege med parameteren inner sep i kommandodefinitionen. 5/5 her.

  • pict2e / picture løsning

    En sen tilføjelse af Herbert foreslår, at der bruges nogle grundlæggende primitiver fra pakkerne picture og pict2e. Her går:

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

    På enkelhedsfronten satser dette ikke for godt. Det ser lidt indviklet ud, selvom det er helt forståeligt efter at have studeret det og bruger to ekstra pakker. 2/5 er en rimelig score her.

    Fleksibilitet er ikke helt indbygget i, men det er bestemt muligt. Cirkelradius kan justeres ved at ændre 1.5 -faktoren, og baselinejusteringen kan spilles med. 3.5 / 5 .

    Som det står i denne definition, er basislinjen for den omgivende tekst tangent til cirklen i stedet for at blive justeret med den cirklede talbase. Dette kan være ønskeligt under nogle omstændigheder, men tallene ser lidt ude af sted på denne måde. Bedre resultater kan opnås med nogle yderligere beregninger, når du placerer felterne, og en 3.5 / 5 gives her til reflektion t dette potentiale.

  • Den anden obligatoriske tikz løsning

    Matthew Leingang og morbusg prøvede deres hånd i dette, og selvom deres indsats bestemt bliver værdsat, føler jeg Stefans løsning er enklere. Jeg er taknemmelig for indsatsen (og din ydmyghed), og jeg opstemte begge dine svar.

  • Endelig score:

    • Enkelhed : raisebox
    • Fleksibilitet : tikz
    • Nøjagtighed : bundet mellem tikz og ding

    Samlet: tikz uden tøven ( acclamation fra offentligheden, hatte kastet, lommetørklæder vinkede og alt det der).

    Endelig nogle testkoder:

    \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} Hvis nogen beslutter at skrive en sådan ting, så lad mig det vide, og jeg vil medtage det i dette svar uden ekstra omkostninger, men rådes om, at indlægget efterfølgende vil blive markeret \textcircled{18+} for at beskytte de svage i hjertet.

    Kommentarer

    • fremragende resume, godt klaret! Indlæg som dette gør dette websted umagen værd.
    • @Yiannis Det ‘ Det har været noget tid siden jeg sendte spørgsmålet, men jeg fandt kun tid lige nu til at polere resuméet. Jeg håber, det vil være til nytte for mennesker med det samme problem.
    • Du siger, ” Afstanden omkring symbolet ser godt ud, selvom det er frit løbende tekst, cirklen skal helst have en tættere pasning omkring nummeret. ” Dette løses let ved at ændre inner sep=2pt til inner sep=1pt i \circled kommandodefinition.
    • @Matt: Sikker – min hensigt her var at påpege et æstetisk problem, men jeg tror Jeg var ikke ‘ t helt klar over det. Info om, hvad der skal ændres, er nu nævnt i posten. Tak.
    • @MartinTapankov Problemet løses med raisebox, forudsat at hvert opkald er forud for \ protect.

    Svar

    Den hurtigste løsning ville være at bruge kommandoen \raisebox. Jeg har spillet lidt med det, og det ser ud til at sænke teksten med 0.9pt sætter figuren omtrent i midten:

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

    Du kunne lege rundt med det for at få det absolutte centrum, men det er bestemt mellem 0,9 og 1pt. Jeg fik ideen her . Det ser ud til, at kommandoen \textcircled fungerer bedst til tekst! Men alligevel skal dette løse dit problem.

    Kommentarer

    • Det ‘ vil ændre sig basislinjen for de tal, som måske ikke er ønskelige. Men måske med et ydre \raisebox for at hæve hele det cirklede antal, kunne basislinjer opretholdes.
    • Mais oui! Jeg skulle selv have tænkt på dette. Tak! Jeg ‘ Jeg venter lidt på nogle flere forslag, før jeg markerer dette som accepteret.
    • @TH. Det er sandt, men det betyder ikke ‘ t for mig – tallene vises ikke i den fritgående tekst, men er snarere overskrifter til tabelkolonner eller bruges til mærkning.
    • Men faktisk har \textcircled output allerede en lavere basislinje med eller uden \raisebox. Så hvis forfatteren foretrækker det hele, skal han gå til pifont. Med en ydre \raisebox er maksimumet en 0,5pt hævning, som får cirklen tilbage til sin oprindelige position, hvilket dog ikke flugter med teksten. At hæve alt ud over 0,5pt begynder at skifte antallet, ikke cirklen, hvilket negerer den oprindelige indsats. Således, hvis forfatteren ønsker en god \textcircled, så er her ‘ en: \raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {8}} } . Dette er faktisk ret godt.
    • @Martin: du får muligvis også et TikZ-forslag. 😉

    Svar

    morbusg allerede nævnt at nogle skrifttyper har omringet tal som Unicode glyfer og viste, hvordan de integreres direkte. Nogle skrifttyper giver en mere brugervenlig grænseflade til adgang til numrene, f.eks. Linux Libertine og Junicode. Det betyder åbenbart, at vi afviger fra dit krav om at bruge Computer Modern. Fordelen ved disse Unicode-numre er formodentlig, at de er udformet af en fontdesigner, så der skal ikke være noget behov for finjustering.

    Her er et simpelt proof-of-concept (Du skal også have junicode -pakken installeret):

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

    output

    Disse metoder er beskrevet i de respektive dokumenter.

    Her er en endnu mere behagelig måde at få adgang til disse sæt numre på. De dobbeltcirklede tal er (pr. Unicode) tilgængelige fra 1 til 10, de andre fra 0 til 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

    Kommentarer

    • Jeg tror, dette ikke fungerer med pdflatex.
    • @moose Ja .. Jeg er nødt til at kontrollere, om den første kodebit fungerer med den aktuelle libertine overhovedet (men så skal pdfLaTeX være fint), den anden bit er kun XeLaTeX / LuaLaTeX, det skal jeg også sætte i svaret.

    Svar

    PGF er overkill til denne ene applikation, men hvis du allerede har den indlæst, kan du bruge den:

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

    uddrag af uddrag

    Som du kan se, er der lidt ekstra plads omkring cirklerne sammenlignet med \textcircled men det er ikke dårligt.

    redigering før post: Jeg kan se, at Stefan og morbusg har slået mig. Nåvel.

    Kommentarer

    • Jeg tror, at en ekstern proces faktisk er overdreven for noget, der kan gøres inde i LaTeX. Du kan lige så enkelt konstruere det som \ newcommand {\ Ring} [1] {\ raisebox {-1pt} {\ begin {tabular} {@ {} c @ {}} {\ small # 1} \ [ -11.5pt] \ BigCircle \ end {tabular}}}. Autojustering af dimensionerne efterlades som en øvelse for læseren 🙂
    • Peter, hvilken ekstern proces?
    • @ u0b34a0f6ae: Jeg tror Peter henviser til det faktum, at tikz bruger en flok \special kommandoer tilføjet efter TeX behandler input. Så det er ‘ s “eksternt” til det normale TeX-fordøjelsessystem.

    Svar

    Fra symbols.pdf ser det ud til, at pifont kan gøre, hvad du vil med \ding{172} til \ding{181} eller \ding{192} til \ding{201}.

    Eller igo pakke med \whitestone{1} til \whitestone{99}, selvom det er beregnet til at sætte Go-kort.

    Det lyder som om løsningen er fundet, men her er “en simpel sammenligning.

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

    indtast billedebeskrivelse her

    Kommentarer

    • Dette er en god løsning. Pifonterne er imidlertid ret squished sammenlignet med \textcircled output. Fordelen er dog, at pifonterne flugter med teksten, hvilket kan være en god ting for forfatteren.
    • @TH: Dejligt. Hvad gør textcomp-pakken?
    • @Jimi: Jeg troede, det var nødvendigt for \textcircled. Jeg var forkert. (Jeg kiggede på tabel 17 i Symbols.pdf, og det bemærkes, at textcomp er påkrævet for \newtie, men jeg var ikke ‘ t læser nøje nok.) Jeg ‘ har opdateret koden.
    • @PatrickT Tak for billedet. Det ‘ er en god tilføjelse.

    Svar

    mathdesign pakke definerer \figurecircled som har bedre mellemrum for tal end \textcircled gør.

    Matematikdesignpakken er inkompatibel med amsfonts og amssymb men hvis du alligevel bruger en mathdesign-skrifttype, er det ikke et problem.

    Kommentarer

    • Dette svar blev nedstemt? Kunne den der gjorde dette forklare, hvorfor de synes, det er en dårlig løsning på problemet?
    • Jeg ‘ t nedstemte dig, men jeg fik en fejl med en simpel testfil. Kan du levere en MWE? Min fejlmeddelelse: ! 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!

    Svar

    @Stefan ” s svar er godt, men jeg forbedrede hans svar.

    For det første, hvis \circled{1} og \circled{10} er placeret sammen , vil de to cirkler ikke have samme størrelse, så jeg tilføjede en valgfri parameter til \circled -kommandoen. Den valgfri parameter blev omskrevet som en pladsholder for at sikre, at disse cirkler vises i samme størrelse.

    Eftersom jeg “d brugte \ifblank, som leveres af pakke etoolbox, for at kontrollere, om den valgfri parameter blev leveret, Jeg brugte \robustify til at gøre kommandoen robust. Dette omgåede ulempen ved at bruge \DeclearRobustCommand, nævnt af @Stefan i en kommentar til hans svar. Således er \protact ikke længere nødvendigt.


    Kode:

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

    Resultat:

    Kommentarer

    • du kender indstillingen minimum size til noder?
    • @percusse Undskyld, men Jeg forstår ‘ dig ikke.
    • Du kan definere en minimumsstørrelse for cirkelknudepunkter uden en boks eller fantom med ensartet størrelse.
    • @percusse At ‘ er et godt forslag dog tror jeg ikke ‘ du forstår ideen i mit indlæg. Jeg designet denne valgfri parameter til at ensforme størrelsen af cirklerne, da cirkler i forskellige størrelser, der er justeret sammen, vil give et uvenligt udseende.

    Svar

    Endnu nemmere:

    \textcircled{\small{2}} 

    eller

    {\large \textcircled{\small 2}} 

    eller

    {\Large \textcircled{\normalsize 2}} 

    [red. Segletes, der leverer 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} 

    LaTeX-gengivelse af ovenstående .tex-fil

    Kommentarer

    • Denne fungerer muligvis når cirklen ikke er omgivet af tekst, og skriftstørrelsen på nummeret ikke er et problem – men jeg ‘ vil hellere bruge en af de andre løsninger i stedet.
    • Kan vi invertere farverne inden i cirklen?

    Svar

    dette svaret er konverteret i en pakke på CTAN: https://ctan.org/pkg/circledsteps

    Svarene her er alle dejligt, og især tikz er meget konfigurerbar. Men det har et problem: du kan ikke bruge det i andre tikzpicture s sikkert. Så jeg flettede et par ting og implementerede dette:

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

    Eksempel på brug

    Kommentarer

    • Ser godt ud! (+1)

    Svar

    med standardbilledkommandoer:

    \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

    Svar

    Med almindelig (snuble over dette tilfældigt og huskede dette spørgsmål):

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

    ringede numre

    Med XeTeX:

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

    Eller måske med 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 “/>

    Darn, Stefan slog mig til det med en pænere.

    Svar

    Her er en \pdfliteral løsning. Det fungerer kun for enkelte numre.

    \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 

    indtast billedebeskrivelse her

    Kommentarer

    • Hvorfor koordinatransformationerne?
    • @percusse Faktisk har jeg lige kopieret kode fra her og ændret den lidt. Hvis du kan levere ressourcer til at lære mere om PDF-kodning, ville jeg være rigtig glad.
    • Det er faktisk PostScript, men PDF understøtter også mange grafiske objekter. Så det er ‘ lidt besværligt at forstå det sæt af alle operatører, der understøttes i PDF. Men i det mindste for at begynde at læse denne kode kan du bruge referencevejledningen adobe.com/content/dam/Adobe/da/devnet/acrobat/pdfs/… . Også i ISO-specifikationen (tabel 59 i adobe.com/devnet/pdf/pdf_reference.html ) kan du genkende de TikZ-operatører, der er kortlagt til frontend;). Det første problem at forstå er at opsætte afgrænsningsboksen, resten er normalt PS-notation.

    Svar

    Brug pifont pakke og symboler fra \ding{172} til \ding{211} har du let meget fremragende cirkelnumre, men hvis du vil have en cirkel tal større end 10 har vi et problem. Som vist af andre stackexchange-brugere her, kan vi løse problemet, hvis antallet ikke er for stort, men tingene blev hårde (komplekse LaTeX-koder), og vi kan have problemer, hvis vi skriver inde i en tekst (hvis cirklen blev stor, kan LaTeX tvinges til at forstørre mellemrummet mellem linjer eller måske til at overlappe cirkel ved tilstødende øvre og nedre linier): tingene er en smule enklere, hvis vi kun vil have et cirkuleret nummer i en liste med detaljer. Denne mangel på fleksibilitet kan i nogle tilfælde være generende. En rimelig løsning ser ud til at bruge pakken tcolorbox : efter forsøg fandt jeg ud af, at vi simpelthen skal tilføje indledningen til dette

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

    og kalde i dokumentet kommandoen \ ciao, når vi vil have et “cirklet” nummer (eksempel: \ ciao {12} vil “cirkulere” tallet 12). Forresten er brugen af fbox i præamblelinjen vigtig, for uden den kunne den afrundede kasse stikke ud af linjen til venstre eller til højre, når de er ved linjemarginen: dette ville være meget uæstetisk.

    Genoptager, jeg ser i denne løsning 3 fordele og 1 ulemper:

    • fordele : Enkel kode, godt arbejde inde i en tekst også, fleksibilitet (store tal også & hvis vi let kan lege med kanter eller farver: se 0.5pt eller sort & hvid i indledningen).
    • ulemper : vi har ikke cirkler, men afrundet boks, men jeg finder dette et rimeligt kompromis.

    Et eksempel på anvendelse af denne metode er

    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. 

    der giver

    indtast billedbeskrivelse her

    bemærk, at tal ikke stikker ud, og at mellemrummet mellem linjer altid er det samme: uanset om vi har et tal eller ej. Kort sagt fungerer disse næsten cirklede tal meget godt, selvom de er inde i en tekst.

    Skriv et svar

    Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *