Tämä kysymys johti uuteen pakettiin:
circledsteps
Yritän tehdä hyvännäköisiä numeroita ympyrään yksinkertaisen komennon avulla:
\textcircled{1}
Ympyrä on kuitenkin väärin pystysuunnassa numeron kanssa ja näyttää hieman huolimattomalta:
Kaikki ehdotukset miten Säädän pystysuuntaista suuntausta niin, että numerot näyttävät keskittyneemmiltä ympyröihin kirjoitettuna? Tai jos tämä ei ole vaihtoehto, mitkä muut keinot saavuttaa samat tulokset ovat mahdollisia?
Käytän vain niitä numeroille ja hyvin harvoissa paikoissa, joten manuaalinen säätö kuviota kohden on vaihtoehto.
Käytän pdfLaTeX
-tietokonetta Computer Modernin kanssa, jos se on tärkeää.
Kommentit
- Sain kaksi hyvää vastausta alle 30 minuutiksi utes (te olette nopeita!).
Lienen todennäköisesti yhteisön wiki-vastauksen, joka sisältää yhteenvedon kaikista vaihtoehdoista yhtenä näistä päivistä, ehkä joitain muita ratkaisuja tulee esiin sillä välin.
\textcircled
? Vastaa
Tässä TikZ-ratkaisu:
\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}
Se on vain solmu. TikZ-asetuksia käytetään perusviivan tasaamiseen, koon säätämiseen ja ympyrän muodon saamiseen. Voit vapaasti valita muita vaihtoehtoja koon tai ympyrän paksuuden suhteen (vaihtoehto thick
). Siellä on lisää: esimerkiksi voit jopa nimetä solmut toisella argumentilla yhdistääksesi ne nuolilla myöhemmin.
Jos joku haluaa käyttää sitä esimerkiksi luetteloidussa luettelossa, se on helppoa, mutta se on suojattava:
\usepackage{enumitem} ... \begin{enumerate}[label=\protect\circled{\arabic*}] \item First item \item Second item \item Third item \item Fourth item \end{enumerate}
Kommentit
- Hyvä esimerkki! Minulla on aiemmin ollut ongelmia TikZ-esimerkkejä inline, mutta nyt näen, että ratkaisu on
baseline=(char.base)
. Viileä. - @Stefan: Ehkä sinun pitäisi korvata
\newcommand
by\DeclareRobustCommand
, kuten että\protect
ei enää tarvita, mikä on käyttäjäystävällisempää. - Sitten pitäisi käyttää \ newcommand julistaakseen tyhjä komento nyrkki ja sitten \ DeclareRobustCommand. Tällä tavoin olemassa oleva komento antaa virheen.
- @LuisFelipeVillavicencioLopez Toki! Kommentit ovat ei paras koodikeskusteluihin. Ehkä lähetä uusi kysymys tai anna ’ s puhua LaTeX-yhteisössä , johon postitan päivittäin.
- Tämä on mukavaa, mutta ongelmana on, että sitä ei ’ voida käyttää
\tikzpicture
— kaltaisessa, esimerkiksi solmun teksti tai tarra. Onko ” yleismaailmalliselle ” ratkaisulle mukavia ympyröityjä numeroita? Katso lisätietoja viitteestä tex.stackexchange.com/questions/496348/…
Vastaus
Olin iloinen yllättynyt siitä, kuinka monet ihmiset päättivät kokeilla sitä, ja paljon mielenkiintoisia ratkaisuja tuli esiin. Perinteiden mukaan tämä vastaus on yhteisöwiki ja siinä esitetään yhteenveto ja vertailu kaikista ehdotetuista ratkaisuista.
Ehdotan täten kolmea erilaista arviointikriteeriä, joista jokainen luokitellaan 1: stä 5: een:
- Yksinkertaisuus . Tämä on mitta, kuinka helppoa on ehdotetun ratkaisun käyttö. Pisteet, jotka vähennetään lisäpakettien käytöstä tai muun kuin yksinkertaisen mukavuusmakron määrittämisestä.
- Joustavuus . Tähän sisältyy ensisijaisesti kuinka helppoa on käyttää tätä muissa yhteyksissä, tässä tapauksessa eri kehysmuodoissa, -koossa ja -paksuudessa.
- Tarkkuus . Yksinkertaisesti sanottuna, kuinka esteettisesti miellyttävä ratkaisu näyttää, etenkin kuinka hyvin glyfi on keskellä virtapiirissä ja kuinka se sopii ympäröivään vapaasti juoksevaan tekstiin.
Tässä on:
-
raisebox
-ratkaisu.Kiitos Jimi Okelle nopeista sormista. Tämä tuli ensin, ja pidän erityisesti mielessäni tarkoitetusta sovelluksesta. Se on yhtä helppoa kuin:
\raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {8}}}
Ei muuta. Yksinkertaisuuden edessä se ei tule paremmaksi kuin tämä.Kiinteä 5/5 , koska ylimääräisiä paketteja ei tarvita, ja raskas määritelmä voidaan hämmentää yhden linjan
\def
.Joustavasti tämä ratkaisu on melko alhainen, koska et voi hallita ympyrän kokoa tai parametreja (olen varma, että jotkut TeX-hakkerit todista väärin, mutta $ DEITY rakkauden vuoksi säästä meiltä tällaisia kauhistuksia). 2/5 on ansaittu täällä. {1}
Tarkkuusongelma on subjektiivinen kuten aina, mutta sinun on leikitettävä pystysuorilla etäisyyksillä, jotta se saadaan juuri oikeaksi ™ sinulle tarkoitetulle kirjasimelle. ovat valinneet. 2/5 .
-
ding
-y ratkaisu.Tämä tuli osoitteesta TH. , joka ehdottaa joidenkin ennalta määriteltyjen symbolikuvioiden käyttöä. Kaikkitietävät symbolit-a4-asiakirjassa sanotaan, että Yksi todellinen tapa tehdä se on käyttää:
\usepackage{pifont} \ding{172}--\ding{181} % seriffed fonts \ding{192}--\ding{201} % sans-seriffed fonts
Tai jopa Go-taulun nimikkeistö:
\usepackage{igo} \whitestone{1}--\whitestone{99}
Yksinkertaisuuden puolella tämä on 4,5 / 5 , vaikka en halua antaa sille suoraa 5 mukana olevien pakettien vuoksi.
Tämä ei ole ollenkaan joustavaa. Jos et pidä kuvioita, olet yksin. 1/5 .
Kuviot itse ovat hyvin suunniteltuja, kuten pitäisi odottaa, ja numerot ovat visuaalisesti hyvin kohdistettu piireihin. Vaikka sinulla on kirjasinlaji, jolla on erilainen tyyli, numerofontti ei välttämättä sovi yhteen tekstin kanssa.
-
Pakollinen
tikz
-ratkaisu.Ahh, sitä aina on, ei ole. Tämä johtuu Stefan Kottwitz ista.
\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}
Henkilökohtaisesti en ole
tikz
(tiedän , Minun pitäisi oppia se yhtenä näistä päivistä), joten tämän tekeminen olisi kertakäyttöinen paketti minulle, jota haluaisin välttää. En voi ”antaa tälle enempää kuin 2/5 , muttatikz
fanboizin (ja galz!): n pitäisi pudottaa tämä aina 4/5 .Kuten joustavuuden suhteen: tämä on todellinen juttu. Stefan osoitti jopa kuinka käyttää ympyröityjä symboleja luetelluilla listoilla kaikesta. Eri kehysmuodot ovat varmasti mahdollisia, vaihtelevalla sovitusasteella kuvion ympärillä. Kiistaton 5/5 .
Lähtötason linjaus on huippuluokkaa ilman pelaamista manuaalisilla säätöillä, mikä on varsin mukavaa. Symbolin ympärillä oleva väli näyttää hyvältä, vaikka vapaasti juoksevassa tekstissä ympyrän tulisi mieluiten olla tiukemmin sovitettu numeron ympärille, mikä voidaan saavuttaa pelaamalla parametrilla
inner sep
komennon määritelmä. 5/5 täällä. -
pict2e
/picture
ratkaisuHerbertin myöhäinen lisäys ehdottaa, että käytetään joitain perusprimitiivejä paketeista
picture
japict2e
. Tässä menee näin:\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}}}}
Yksinkertaisuuden edessä tämä ei arvioi liian hyvin. Se näyttää hieman sekavalta, vaikkakin ehdottomasti ymmärrettävältä sen opiskelemisen jälkeen ja käyttää kaksi lisäpakettia. 2/5 on tässä kohtuullinen tulos.
Joustavuus ei ole aivan sisäänrakennettu sisään, mutta on varmasti mahdollista. Ympyrän säde voidaan säätää muokkaamalla
1.5
-kerrointa, ja perusviivan säätöä voidaan toistaa. 3.5 / 5 .Tässä määritelmässä ympäröivän tekstin perusviiva on tangentti ympyrälle sen sijaan, että se olisi kohdistettu ympyröityyn numeropohja. Tämä saattaa olla toivottavaa joissakin olosuhteissa, mutta numerot näyttävät tällä tavoin olevan hieman väärässä paikassa. Parempia tuloksia voidaan saavuttaa käyttämällä joitain lisälaskelmia laatikoiden asettamisessa ja 3.5 / 5 annetaan tässä heijastukseksi t tämä potentiaali.
-
Toinen pakollinen
tikz
ratkaisuMatthew Leingang ja morbusg kokeilivat käsiään tässä, ja vaikka heidän ponnistelujaan varmasti arvostetaan, mielestäni Stefanin ratkaisu on yksinkertaisempi. Olen kiitollinen ponnistelusta (ja nöyryydestänne), ja äänestin molemmat vastauksesi.
Lopputulos:
- Yksinkertaisuus :
raisebox
- Joustavuus :
tikz
- Tarkkuus : sidottu
tikz
jading
Kaiken kaikkiaan: tikz
, epäröimättä ( yleisön suosiota, heitettyjä hattuja, nenäliinoja heiluttaen ja niin edelleen).
Lopuksi joitain testikoodeja:
\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} Jos joku päättää kirjoittaa tällaisen asian, ilmoita siitä minulle, ja sisällytän sen tähän vastaukseen ilman lisäkustannuksia, mutta häntä kehotetaan ilmoittamaan, että viesti merkitään myöhemmin \textcircled{18+}
suojaamaan heikkoa sydäntä.
Kommentit
- erinomainen yhteenveto, hyvin tehty! Tämänkaltaiset viestit tekevät tästä sivustosta kannattavaa.
- @Yiannis ’ on kulunut jonkin aikaa kysymyksen lähettämisestä, mutta löysin vasta nyt aikaa kiillottaa yhteenveto. Toivon, että siitä on hyötyä ihmisille, joilla on sama ongelma.
- Sanot, ” Symbolin ympärillä olevat välit näyttävät olevan kunnossa, vaikkakin vapaassa käytössä tekstissä ympyrän tulisi mieluiten olla tiukemmin sovitettu numeron ympärille. ” Tämä on helppo korjata muuttamalla
inner sep=2pt
muotooninner sep=1pt
\circled
-komennon määritelmässä. - @Matt: Toki – aikomukseni oli tässä osoittaa esteettinen kysymys, mutta luulisin En ollut ’ t täysin selvä siitä. Tiedot muutettavista on nyt mainittu viestissä. Kiitos.
- @MartinTapankov Ongelma ratkaistaan korotuslaatikolla edellyttäen, että jokaista puhelua edeltää \ suoja.
Vastaa
Nopein korjaus olisi käyttää \raisebox
-komentoa. Olen soittanut sen kanssa vähän, ja näyttää siltä, että tekstin alentaminen 0.9pt: llä asettaa kuvan suunnilleen keskelle:
\textcircled{\raisebox{-0.9pt}{8}}
Voit leikkiä sen avulla saadaksesi absoluuttisen keskipisteen, mutta se on ehdottomasti välillä 0,9 ja 1pt. Sain idean täältä . Näyttää siltä, että \textcircled
-komento toimii parhaiten tekstille! Mutta joka tapauksessa, tämän pitäisi ratkaista ongelmasi.
Kommentit
- Se ’ muuttuu niiden numeroiden lähtötaso, jotka eivät ehkä ole toivottavia. Mutta ehkä ulkoisella
\raisebox
avulla koko ympyröityjen numeroiden nostamiseksi perusviivat voitaisiin säilyttää. - Mais oui! Minun olisi pitänyt ajatella tätä itse. Kiitos! ’ Odotan vielä joitain ehdotuksia, ennen kuin merkitsen tämän hyväksytyksi.
- @TH. Totta, mutta minulla ei ole ’ merkitystä – numerot eivät näy vapaasti käynnissä olevassa tekstissä, vaan ovat pikemminkin taulukoiden sarakkeiden otsikoita tai niitä käytetään merkinnöissä.
- Mutta itse asiassa
\textcircled
-lähdöllä on jo alempi lähtötaso\raisebox
: n kanssa tai ilman sitä. Joten, jos kirjoittaja suosii kaikkea huuhtelua, hänen pitäisi valitapifont
. Ulkopuolella\raisebox
suurin on 0,5pt korotus, joka saa ympyrän takaisin alkuperäiseen asentoonsa, joka ei kuitenkaan ole samalla tasolla tekstin kanssa. Kaiken korottaminen yli 0,5pt alkaa siirtää lukua, ei ympyrää, mikä hylkää alkuperäiset ponnistelut. Jos siis kirjoittaja haluaa hyvän\textcircled
, niin tässä ’ yksi:\raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {8}} }
. Tämä on todella hyvä. - @Martin: saatat saada myös TikZ-ehdotuksen. 😉
vastaus
morbusg jo mainittu että jotkut kirjasimet ovat ympäröineet numeroita Unicode-kuviot ja osoittivat, kuinka ne upotetaan suoraan. Jotkut fontit tarjoavat käyttäjäystävällisemmän käyttöliittymän numeroiden käyttämiseen, esim. Linux Libertine ja Junicode. Tämä tarkoittaa tietenkin, että poikkeamme vaatimuksestasi käyttää Computer Modernia. Näiden Unicode-numeroiden etuna on oletettavasti se, että ne on suunnitellut fonttien suunnittelija, joten hienosäätöä ei pitäisi olla tarvetta.
Tässä on yksinkertainen todistuskäsite (Sinun on myös on paketti junicode
asennettu):
\documentclass{article} \usepackage{fontspec} \usepackage{libertine} \begin{document} \libertineGlyph{uni2460} \libertineGlyph{uni24F5} \libertineGlyph{uni2776} {\fontspec[Ligatures=Discretionary]{Junicode}[1] [[1]] <1>} \end{document}
Nämä menetelmät on kuvattu vastaavissa asiakirjoissa.
Tässä on vieläkin mukavampi tapa käyttää näitä numerosarjoja. Kaksinkertaisesti ympyröityjä numeroita on (Unicode-kohden) 1-10, muut 0-20.
\documentclass{article} \usepackage{fontspec} \usepackage{libertine} \usepackage{pgf} % for the calculation % \libcirc and \libcircblk display their "0" if the parameter is out of range \newcommand{\libcirc}[1]{\pgfmathparse{ ifthenelse(#1 > 0 && #1 < 21, Hex(9311+#1), Hex(9450) }\libertineGlyph{uni\pgfmathresult}} \newcommand{\libcircdbl}[1]{\pgfmathparse{Hex(9460+#1)}\libertineGlyph{uni\pgfmathresult}} \newcommand{\libcircblk}[1]{\pgfmathparse{ ifthenelse(#1 > 0 && #1 < 11, Hex(10101+#1), ifthenelse(#1 > 10 && #1 < 21, Hex(9450-10+#1), Hex(9471) ) ) }\libertineGlyph{uni\pgfmathresult}} \newcommand{\juncirc}[1]{{\fontspec[Ligatures=Discretionary]{Junicode}[#1]}} \newcommand{\juncircdbl}[1]{{\fontspec[Ligatures=Discretionary]{Junicode}[[#1]]}} \newcommand{\juncircblk}[1]{{\fontspec[Ligatures=Discretionary]{Junicode}<#1>}} \usepackage{pgffor} % just for the demo loop \setlength{\parindent}{0pt} % just for the demo \begin{document} \section{Linux Libertine} \foreach \x in {0,...,20} {\libcirc{\x} } \foreach \x in {1,...,10} {\libcircdbl{\x} } \foreach \x in {0,...,20} {\libcircblk{\x} } \section{\fontspec{Junicode}Junicode} \foreach \x in {0,...,20} {\juncirc{\x} } \foreach \x in {1,...,10} {\juncircdbl{\x} } \foreach \x in {0,...,20} {\juncircblk{\x} } \end{document}
kommentit
- Tämä ei mielestäni toimi
pdflatex
kanssa. - @moose Kyllä .. Minun on tarkistettava, toimiiko ensimmäinen koodibitti nykyisen kanssa
libertine
lainkaan (mutta tällöin pdfLaTeXin pitäisi olla kunnossa), toinen bitti on vain XeLaTeX / LuaLaTeX, minun pitäisi laittaa se myös vastaukseen.
vastaus
PGF on ylikierroksia tälle yhdelle sovellukselle, mutta jos se on jo ladattu, voit käyttää sitä:
\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}
Kuten näette, ympyröiden ympärillä on ylimääräistä tilaa verrattuna div id = ”d10156c98e”>
mutta se ei ole huono.
Edeltävä muokkaus: Näen, että Stefan ja morbusg ovat voittaneet minut lyöntiin. Voi hyvin.
Kommentit
- Luulen, että ulkoinen prosessi on todella ylivoimainen jollekin, mikä voidaan tehdä LaTeX: n sisällä. Voit rakentaa sen yhtä yksinkertaisesti kuin \ newcommand {\ Ring} [1] {\ raisbox {-1pt} {\ begin {tabular} {@ {} c @ {}} {\ small # 1} \ [ -11.5pt] \ BigCircle \ end {tabular}}}. Mittojen automaattinen säätö jätetään harjoitukseksi lukijalle 🙂
- Peter, mikä ulkoinen prosessi?
- @ u0b34a0f6ae: Luulen, että Peter viittaa siihen, että
tikz
käyttää joukkoa\special
-komentoja, jotka lisätään sen jälkeen, kun TeX käsittelee syötteen. Joten se ’ on ”ulkoinen” normaalille TeX-digestiojärjestelmälle.
Vastaa
Symbolista.pdf näyttää siltä, että pifont
voi tehdä mitä haluat \ding{172}
– tai \ding{192}
– \ding{201}
.
Tai igo
-paketti, jossa on \whitestone{1}
– \whitestone{99}
, vaikka se on tarkoitettu Go-levyjen kokoamiseen.
Vaikuttaa siltä, että ratkaisu on löydetty, mutta tässä on yksinkertainen vertailu.
\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}
kommentit
- Tämä on hieno ratkaisu. Pifontit ovat kuitenkin melko squished verrattuna
\textcircled
-ulostuloon. Ammattilainen on kuitenkin, että pifontit ovat samassa tasossa tekstin kanssa, mikä voi olla hyvä asia tekijälle. - @TH: Hienoa. Mitä textcomp-paketti tekee?
- @Jimi: Luulin, että se vaaditaan
\textcircled
. Olin väärässä. (Katsoin Symbols.pdf-taulukkoa 17 ja siinä todetaan, ettätextcomp
vaaditaan kohteelle\newtie
, mutta minua ei ollut ’ en lukenut riittävän huolellisesti.) Olen päivittänyt koodin. - @PatrickT Kiitos kuvasta.
Se ’ on hyvä lisäys.
Vastaa
mathdesign
-paketti määrittelee \figurecircled
-kohdan, jossa numeroille on parempi väli kuin \textcircled
tekee.
Mathdesign-paketti ei ole yhteensopiva amsfonts
ja amssymb
kanssa mutta jos käytät joka tapauksessa mathdesign-fonttia, se ei ole ongelma.
Kommentit
- Tämä vastaus hylättiin? Voisiko kuka tämän tehdä, selittää, miksi heidän mielestään tämä on huono ratkaisu ongelmaan?
- En äänestänyt ’ äänestäen sinua, mutta sain virheen yksinkertaisella testitiedosto. Voitteko tarjota MWE: n? Oma virheilmoitus:
! 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!
Vastaa
@Stefan ” Vastaus on hyvä, mutta parannin hänen vastaustaan.
Ensinnäkin, jos \circled{1}
ja \circled{10}
sijoitetaan yhteen , nämä kaksi ympyrää eivät ole samankokoisia, joten lisäsin valinnaisen parametrin komentoon \circled
. Valinnainen parametri luokiteltiin paikkamerkiksi varmistaaksesi, että nämä ympyrät näkyvät sama koko.
Lisäksi, koska käytin \ifblank
-tunnistetta, jonka paketti etoolbox
tarjoaa, tarkistaaksesi, onko valinnainen parametri annettu, Käytin komentoa \robustify
tekemään komennon vankaksi. Tämä ohitti haitan \DeclearRobustCommand
käytöstä, jonka @Stefan mainitsi vastauksessaan. Täten \protact
ei enää tarvita.
Koodi:
\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}
Tulos:
Kommentit
- tiedätkö vaihtoehdon
minimum size
solmuille? - @percusse Anteeksi, mutta En ymmärrä sinua ’.
- Voit määrittää vähimmäiskoon ympyräsolmuille, joissa ei ole yhtenäisen koon laatikkoa tai fantomia.
- @percusse Tämä ’ on hyvä ehdotus en kuitenkaan ’ usko ymmärtävänne viestiäni ajatusta. Suunnittelin tämän valinnaisen parametrin tasaamaan ympyröiden kokoa, koska erikokoiset ympyrät, jotka on kohdistettu yhteen, antavat epäystävällisen ilmeen.
Vastaa
Vielä helpompaa:
\textcircled{\small{2}}
tai
{\large \textcircled{\small 2}}
tai
{\Large \textcircled{\normalsize 2}}
[toim. Segleteet, toimittamalla MWE & kuva]
\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}
Kommentit
- Tämä saattaa toimia, kun ympyrää ei ympäröi teksti, eikä numeron kirjasinkoko ole ongelma – mutta käytän mieluummin yhtä muista ratkaisuista.
sen sijaan.
Vastaa
tähän vastaus on muunnettu paketiksi CTAN: lla: https://ctan.org/pkg/circledsteps
Tässä on kaikki vastaukset mukava, ja varsinkin tikz
on konfiguroitavissa suuresti. Mutta sillä on ongelma: et voi käyttää sitä turvallisesti muiden tikzpicture
s sisällä. Joten yhdistin pari asiaa ja toteutin tämän:
\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}
kommentit
- Näyttää hyvältä! (+1)
Vastaa
kuvakomennoilla:
\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}
vastaus
Tavallisen kanssa (kompastin tähän sattumalta ja muisti tämän kysymyksen):
\def\circled#1{{\ooalign{\hfil\lower.1ex\hbox{#1}\hfil\crcr\Orb}}} $\circled1 \circled2 \circled3 \ldots \circled9 \quad \circled{23}$ \bye
XeTeX: n kanssa:
\font\circled="Arial Unicode MS" {\circled ➀} Didn"t occur to me {\circled ➄} earlier that some fonts have {\circled ➇} these. \bye
Tai ehkä TikZ: llä:
\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 =” Isännöi imgur.com ”/>
Darn, Stefan voitti minut mukavammalla.
Vastaa
Tässä on \pdfliteral
-ratkaisu. Se toimii vain yksittäisillä numeroilla.
\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
kommentit
- Miksi koordinaattimuunnokset?
- @percusse Kopioin oikeastaan koodin täältä ja muutin sitä hieman. Jos pystyt tarjoamaan resursseja oppiaksesi lisää PDF-koodauksesta, olisin todella onnellinen.
- Se on itse asiassa PostScript, mutta PDF tukee myös monia grafiikkaobjekteja. Joten ’ on hieman hankala ymmärtää kaikkien PDF-muodossa tuettujen operaattorien joukko. Mutta ainakin tämän koodin lukemisen aloittamiseksi voit käyttää viiteopasta adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/… . Myös ISO-määrityksessä (taulukko 59 kohdassa adobe.com/devnet/pdf/pdf_reference.html ) voit tunnistaa TikZ-operaattorit, jotka on yhdistetty käyttöliittymään;). Aluksi ymmärrettävä ongelma on rajoituslaatikon asettaminen, loput ovat tavallisia PS-merkintöjä.
Vastaa
Käyttämällä pifont -paketti ja symbolit välillä \ding{172}
– \ding{211}
sinulla on helposti erinomaiset ympyröityt numerot, mutta jos haluat ympyröidä yli 10 numerolla meillä on ongelma. Kuten muutkin pinonvaihtokäyttäjät osoittavat täällä, voimme ratkaista ongelman, jos numerot eivät ole liian suuria, mutta asioista on tullut vaikeita (monimutkaiset LaTeX-koodit), ja meillä voi olla ongelmia, jos kirjoitamme tekstin sisään (jos ympyrästä tuli iso, LaTeX pakotetaan suurentamaan rivien välistä tilaa tai ehkä peittämään ympyrä vierekkäisten ylemmän ja alemman rivin kohdalla): asiat ovat hieman yksinkertaisempia, jos haluamme vain ympyröidyn numeron tuoteluetteloon. Tämä joustavuuden puute voi joissakin tapauksissa olla häiritsevää. Kohtuullinen ratkaisu näyttää käyttävän tcolorbox -pakettia: Yritysten jälkeen huomasin, että meidän on yksinkertaisesti lisättävä tämä johdanto-osaan
\usepackage{tcolorbox} \newcommand{\ciao}[1]{{\setlength\fboxrule{0pt}\fbox{\tcbox[colframe=black,colback=white,shrink tight,boxrule=0.5pt,extrude by=1mm]{\small #1}}}}
ja Kutsu asiakirjassa komento \ ciao, kun haluamme ”ympyröidyn” numeron (esimerkki: \ ciao {12} ”ympyröi” luvun 12). Muuten, fbox: n käyttö johdanto-osassa on tärkeää, koska ilman sitä pyöristetty laatikko voi ulottua ulos vasemmalta tai oikealta, kun ne ovat rivin reunalla: tämä olisi hyvin esteettistä.
Jatketaan, näen tässä ratkaisussa 3 plussaa ja 1 miinusta:
- plussat : yksinkertainen koodi, hyvä työskentely myös tekstin sisällä, joustavuus (liian isot numerot &, jos voimme helposti pelata reunoilla tai väreillä: katso 0.5pt tai musta & johdanto-osassa oleva valkoinen).
- haittoja : meillä ei ole ympyröitä, mutta pyöristetty ruutu, mutta mielestäni tämä on kohtuullinen kompromissi.
Esimerkki tämän menetelmän soveltamisesta on
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.
joka antaa
Huomaa, että numerot eivät työnny esiin ja että rivien väli on aina sama: riippumatta siitä, onko meillä numero. Lyhyesti sanottuna nämä melkein ympyröidyt numerot toimivat erittäin hyvin, vaikka ne olisivatkin tekstin sisällä.