Dobry sposób na tworzenie liczb \ textcircled?

To pytanie doprowadziło do nowego pakietu:
circledsteps

Próbuję stworzyć ładne liczby w kółku, używając prostego polecenia:

\textcircled{1} 

Jednak kółko jest źle wyrównane w pionie z liczbą i wygląda trochę niechlujnie:

tekst alternatywny

Wszelkie sugestie, jak można Dopasowuję wyrównanie w pionie, aby liczby wyglądały na bardziej wyśrodkowane względem okręgów? A jeśli to nie jest możliwe, jakie inne sposoby osiągnięcia tych samych wyników są możliwe?

Użyję tylko tych dla liczb, i to w bardzo niewielu miejscach, więc ręczna regulacja glifu jest opcją.

Używam pdfLaTeX z Computer Modern, jeśli to ma znaczenie.

Komentarze

  • Mam tutaj dwie dobre odpowiedzi na mniej niż 30 minut utes (jesteście szybcy!). ' prawdopodobnie utworzę odpowiedź wiki społeczności podsumowującą wszystkie opcje któregoś z tych dni, może w międzyczasie pojawią się inne rozwiązania.
  • I ' brak snu, to ' dlaczego!
  • Co zapewnia pakiet \textcircled?
  • @Matthew: Wygląda na to, że jest wbudowany w LaTeX. Działa po wyjęciu z pudełka.
  • Możesz użyć Unicode. U + 2460-2473 dla 1 do 20, U + 24EA dla 0, U + 3251-325F dla 21-35 i U + 32B1-32BF dla 36-50.

Odpowiedź

Oto „rozwiązanie TikZ:

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

tekst alternatywny

To tylko węzeł. Opcje TikZ służą do wyrównania linii bazowej, dostosowania rozmiaru i uzyskania kształtu koła. Możesz wybrać dalsze opcje dotyczące rozmiaru lub grubości koła (opcja thick). Jest więcej: na przykład możesz nawet nazwać węzły innym argumentem, aby połączyć je strzałkami później.

Jeśli ktoś chce używać go na przykład do listy wyliczanej, jest to łatwe, ale musi być chronione:

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

tekst alternatywny

Komentarze

  • Słodki przykład! W przeszłości miałem problemy z używaniem Przykłady TikZ w tekście, ale teraz widzę, że rozwiązuje to baseline=(char.base). Super.
  • @Stefan: być może powinieneś zamienić \newcommand by \DeclareRobustCommand, na przykład \protect nie jest już potrzebne, co jest bardziej przyjazne dla użytkownika.
  • Następnie należy użyć \ newcommand, aby zadeklarować pustą pięść poleceń, a następnie użyć \ DeclareRobustCommand. W ten sposób istniejące polecenie spowoduje błąd.
  • @LuisFelipeVillavicencioLopez Jasne! Komentarze są nie jest najlepszy do dyskusji o kodzie. Być może opublikuj nowe pytanie lub pozwól ' porozmawiać na społeczności LaTeX , gdzie piszę codziennie.
  • To fajne, ale problem polega na tym, że ' nie może być używane wewnątrz \tikzpicture — jak, dla na przykład tekst węzła lub etykieta. Czy jest jakieś rozwiązanie dla ” uniwersalnych ” liczb w kółkach? Aby uzyskać więcej informacji, zobacz tex.stackexchange.com/questions/496348/…

Odpowiedź

Byłem mile zaskoczony, jak wiele osób zdecydowało się spróbować i pojawiło się wiele ciekawych rozwiązań. Zgodnie z tradycją ta odpowiedź będzie wiki społeczności i podsumuje i porówna wszystkie sugerowane rozwiązania.


Niniejszym proponuję trzy różne kryteria oceny, każde z oceną od 1 do 5:

  • Prostota . To miara łatwości korzystania z proponowanego rozwiązania. Punkty odejmowane za używanie dodatkowych pakietów lub definiowanie czegokolwiek innego niż proste makro wygody.
  • Elastyczność . Obejmuje to przede wszystkim łatwość użycia tego w innych kontekstach, w tym przypadku w różnych kształtach, rozmiarach i grubościach ramek.
  • Dokładność . Mówiąc najprościej, jak estetycznie wygląda to rozwiązanie, szczególnie jak dobrze glif jest wyśrodkowany w okręgu i jak pasuje do otaczającego tekst.

Zaczynamy:

  1. Rozwiązanie raisebox.

    Podziękowania dla Jimi Oke za szybkie palce. To pojawiło się jako pierwsze i szczególnie podoba mi się aplikacja, o której myślałem. To jest tak proste, jak:

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

    Nic więcej. Pod względem prostoty nie ma nic lepszego niż to.Solidne 5/5 , ponieważ nie są potrzebne żadne dodatkowe pakiety, a nieporęczną definicję można w trywialny sposób ująć w jednym wierszu \def.

    Elastyczność tego rozwiązania jest dość niska, ponieważ nie masz kontroli nad rozmiarem koła ani parametrami (jestem pewien, że niektórzy hakerzy TeX-a udowodnij mi, że się mylę, ale z miłości do $ DEITY , oszczędź nam takich obrzydliwości). 2/5 jest tutaj zasłużony. {1}

    Kwestia dokładności jest jak zwykle subiektywna, ale trzeba by bawić się odległościami w pionie, aby uzyskać odpowiedni krój ™ dla kroju pisma, wybrali. 2/5 .

  2. ding -y rozwiązanie.

    Pochodzi z TH. , co sugeruje użycie niektórych predefiniowanych glifów symboli. Dokument wszechwiedzących symboli-a4 mówi, że jedynym prawdziwym sposobem na to jest użycie:

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

    Lub nawet nazewnictwo tablicy Go:

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

    Jeśli chodzi o prostotę, jest to 4,5 / 5 , chociaż nie chcę nadawać mu prostej 5 ze względu na dodatkowe pakiety.

    To wcale nie jest elastyczne. Jeśli nie lubisz glifów, jesteś sam. 1/5 .

    Jak należało się spodziewać, same glify są dobrze zaprojektowane, a liczby są wizualnie dobrze wyrównane z okręgami. Chociaż jeśli masz krój pisma z wyraźnym stylem, czcionka liczb może nie pasować do tekstu.

  3. Obowiązkowe tikz.

    Ach, zawsze jest to, prawda. Dzieje się tak za sprawą Stefana Kottwitza .

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

    Osobiście nie interesuje mnie tikz (wiem , Powinienem się tego kiedyś nauczyć), więc skorzystanie z tego pakietu byłoby dla mnie jednorazowym użyciem, którego chciałbym uniknąć. Nie mogę dać więcej niż 2/5 tutaj, ale tikz fanboiz (i galz!) powinien podbić to aż do 4/5 .

    Jak jeśli chodzi o elastyczność: to jest prawdziwa okazja. Stefan zademonstrował nawet, jak używać symboli w kółkach z wyliczonymi listami, wszystkich rzeczy. Z pewnością możliwe są różne kształty ramek, z różnym stopniem dopasowania wokół glifu. Bezsporne 5/5 .

    Wyrównanie linii bazowej jest na najwyższym poziomie bez konieczności robienia ręcznych korekt, co jest całkiem miłe. Odstępy wokół symbolu wyglądają dobrze, chociaż w wolnym tekście okrąg powinien być ściślej dopasowany do liczby, co można osiągnąć, bawiąc się parametrem inner sep w definicję polecenia. 5/5 tutaj.

  4. pict2e / picture rozwiązanie

    Późny dodatek autorstwa Herberta proponuje użycie kilku podstawowych prymitywów z pakietów picture i pict2e. Oto idzie:

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

    Jeśli chodzi o prostotę, nie jest to zbyt dobre. Wygląda na nieco zawiłe, chociaż zdecydowanie zrozumiałe po przestudiowaniu i używa dwa dodatkowe pakiety. 2/5 to rozsądny wynik.

    Elastyczność nie jest do końca zbudowana – in, ale z pewnością jest to możliwe. Promień okręgu można dostosować, modyfikując współczynnik 1.5, a dostosowanie linii bazowej można odtworzyć. 3.5 / 5 .

    W tej definicji linia bazowa otaczającego tekstu jest styczna do okręgu, a nie wyrównana z zakreślonym podstawa liczbowa. Może to być pożądane w pewnych okolicznościach, ale w ten sposób liczby wyglądają trochę nie na miejscu. Lepsze wyniki można osiągnąć, wykonując dodatkowe obliczenia podczas umieszczania pól i 3.5 / 5 jest tutaj podane w celu odzwierciedlenia t ten potencjał.

  5. Inne obowiązkowe tikz rozwiązanie

    Matthew Leingang i morbusg spróbowali swoich sił w tym i chociaż ich wysiłki są z pewnością doceniane, uważam, że rozwiązanie Stefana jest prostsze. Jestem wdzięczny za wysiłek (i twoją pokorę) i głosowałem za obie odpowiedzi.

Wynik końcowy:

  • Prostota : raisebox
  • Elastyczność : tikz
  • Dokładność : remis między tikz i ding

Ogólnie: tikz, bez wahania ( oklaski od publiczności, rzucane czapki, machające chusteczkami i tak dalej).

Na koniec trochę kodu testowego:

\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} Jeśli ktoś zdecyduje się napisać coś takiego, daj mi znać, a zamieszczę to w tej odpowiedzi bez dodatkowych kosztów, ale pamiętaj, że post zostanie później oznaczony jako \textcircled{18+} by chronić osoby o słabych nerwach.

Komentarze

  • doskonałe podsumowanie, dobra robota! Posty takie jak ten sprawiają, że ta witryna jest warta zachodu.
  • @Yiannis It ' Minęło trochę czasu, odkąd opublikowałem to pytanie, ale dopiero teraz znalazłem czas na polerowanie podsumowanie. Mam nadzieję, że będzie to przydatne dla osób z tym samym problemem.
  • Mówisz, ” Odstępy wokół symbolu wyglądają dobrze, chociaż w trybie swobodnym tekst okrąg powinien być lepiej dopasowany do numeru. ” Można to łatwo naprawić, zmieniając inner sep=2pt na inner sep=1pt w \circled definicji polecenia.
  • @Matt: Oczywiście – moim zamiarem było zwrócenie uwagi na kwestię estetyczną, ale wydaje mi się, że Nie byłem ' co do tego całkiem jasny. Informacje o tym, co należy zmienić, są teraz wymienione w poście. Dzięki.
  • @MartinTapankov Problem został rozwiązany za pomocą raisebox, pod warunkiem, że każde połączenie jest poprzedzone znakiem \ protect.

Odpowiedź

Najszybszym rozwiązaniem byłoby użycie polecenia \raisebox. Trochę się z tym bawiłem i wydaje się, że obniżenie tekstu o 0,9 pkt. Powoduje umieszczenie liczby mniej więcej pośrodku:

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

Można się pobawić aby uzyskać absolutne centrum, ale zdecydowanie między 0,9 a 1 pkt. Pomysł wpadłem tutaj . Wygląda na to, że polecenie \textcircled działa najlepiej w przypadku tekstu! W każdym razie to powinno rozwiązać Twój problem.

Komentarze

  • To ' ulegnie zmianie podstawa liczb, które mogą być niepożądane. Ale być może z zewnętrznym \raisebox w celu podniesienia całej liczby w kółku, linie bazowe mogłyby zostać zachowane.
  • Mais oui! Sam powinienem o tym pomyśleć. Dzięki! ' poczekam trochę na więcej sugestii, zanim oznaczymy to jako zaakceptowane.
  • @TH. To prawda, ale nie ma to dla mnie znaczenia ' – liczby nie pojawiają się w wolnym tekście, ale są raczej nagłówkami kolumn tabeli lub służą do oznaczania.
  • Ale w rzeczywistości wynik \textcircled ma już niższą linię bazową z \raisebox lub bez niego. Tak więc, jeśli autor woli, aby wszystko było wyrównane, powinien wybrać pifont. Przy zewnętrznym \raisebox, maksimum to podbicie o 0,5 pkt., Które przywraca kółko do pierwotnej pozycji, która jednak nie jest wyrównana z tekstem. Podniesienie wszystkiego powyżej 0,5 pkt zaczyna przesuwać liczbę, a nie koło, negując początkowe wysiłki. Dlatego jeśli autor chce dobrego \textcircled, to tutaj ' ten: \raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {8}} } . To jest całkiem niezłe.
  • @Martin: możesz również otrzymać sugestię TikZ. 😉

Odpowiedź

morbusg już wspomniano że niektóre czcionki mają zakreślone cyfry jako Glify Unicode i pokazały, jak je osadzić bezpośrednio. Niektóre czcionki zapewniają bardziej przyjazny dla użytkownika interfejs umożliwiający dostęp do numerów, np. Linux Libertine i Junicode. Oczywiście oznacza to, że odbiegamy od Twojego wymogu używania Computer Modern. Zaletą tych numerów Unicode jest przypuszczalnie to, że zostały stworzone przez projektanta czcionek, więc nie powinno być potrzeby dostrajania.

Oto prosty dowód koncepcji (musisz również mieć zainstalowany pakiet junicode):

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

wyjście

Metody te są opisane w odpowiednich dokumentach.

Oto jeszcze wygodniejszy sposób uzyskiwania dostępu do tych zestawów liczb. Liczby w podwójnych kółkach są (według Unicode) dostępne od 1 do 10, pozostałe od 0 do 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} 

wyjście

Komentarze

  • Myślę, że to nie działa z pdflatex.
  • @moose Tak .. Muszę sprawdzić, czy pierwszy bit kodu działa z bieżącym libertine w ogóle (ale wtedy pdfLaTeX powinien być w porządku), drugi bit to tylko XeLaTeX / LuaLaTeX, powinienem również umieścić to w odpowiedzi.

Odpowiedź

PGF to przesada dla tej jednej aplikacji, ale jeśli już ją załadowałeś, możesz jej użyć:

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

wyjście fragmentu kodu

Jak widać, wokół kręgów jest trochę więcej miejsca niż \textcircled ale nie jest źle.

Edycja przed postem: Widzę, że Stefan i morbusg pokonali mnie. No cóż.

Komentarze

  • Myślę, że proces zewnętrzny jest rzeczywiście przesadą, jeśli chodzi o coś, co można zrobić w LaTeX. Możesz po prostu utworzyć to jako \ newcommand {\ Ring} [1] {\ raisebox {-1pt} {\ begin {tabular} {@ {} c @ {}} {\ small # 1} \ [ -11,5pt] \ BigCircle \ end {tabular}}}. Czytelnikowi pozostawiono automatyczną korektę wymiarów jako ćwiczenie 🙂
  • Peter, jaki proces zewnętrzny?
  • @ u0b34a0f6ae: Myślę, że Piotr odnosi się do faktu, że tikz używa zestawu poleceń \special dodanych po przetworzeniu danych wejściowych przez TeX. Jest to więc ' „zewnętrzne” w stosunku do normalnego systemu trawienia TeX.

Odpowiedź

Z symbols.pdf wygląda na to, że pifont może robić, co chcesz, z \ding{172} do \ding{181} lub \ding{192} do \ding{201}.

Lub igo pakiet zawierający \whitestone{1} do \whitestone{99}, chociaż jest to przeznaczone do składania tablic Go.

Wygląda na to, że znaleziono rozwiązanie, ale oto „proste porównanie.

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

tutaj wprowadź opis obrazu

Komentarze

  • To świetne rozwiązanie. Jednak znaki pifont są raczej ściśnięte w porównaniu z danymi wyjściowymi \textcircled. Zaletą jest jednak to, że pifonty są równo z tekstem, co może być dobrą rzeczą dla autora.
  • @TH: Fajnie. Co robi pakiet textcomp?
  • @Jimi: Wydawało mi się, że jest to wymagane przez \textcircled. Myliłem się. (Patrzyłem na tabelę 17 w Symbols.pdf i zauważyłem, że textcomp jest wymagane dla \newtie, ale nie ' nie czytam wystarczająco uważnie.) ' zaktualizowałem kod.
  • @PatrickT Dziękuję za obraz. To ' to dobry dodatek.

Odpowiedź

mathdesign pakiet definiuje \figurecircled, który ma lepsze odstępy dla liczb niż \textcircled tak.

Pakiet mathdesign jest niezgodny z amsfonts i amssymb ale jeśli i tak używasz czcionki matematycznej, nie stanowi to problemu.

Komentarze

  • Ta odpowiedź została odrzucona? Czy ktokolwiek to zrobił, mógłby wyjaśnić, dlaczego uważa, że to złe rozwiązanie problemu?
  • Nie ' nie głosowałem przeciw, ale pojawił się błąd z prostym plik testowy. Czy możesz zapewnić MWE? Mój komunikat o błędzie: ! 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!

Odpowiedź

@Stefan ” odpowiedź jest dobra, jednak poprawiłem jego odpowiedź.

Po pierwsze, jeśli \circled{1} i \circled{10} są umieszczone razem , dwa okręgi nie będą miały tego samego rozmiaru, więc dodałem opcjonalny parametr do polecenia \circled. Opcjonalny parametr został ponownie oceniony jako symbol zastępczy, aby upewnić się, że te okręgi pojawiają się w ten sam rozmiar.

Ponadto, ponieważ użyłem \ifblank, które jest dostarczane przez pakiet etoolbox, aby sprawdzić, czy podano opcjonalny parametr, Użyłem \robustify, aby polecenie było solidne. Pozwoliło to ominąć wadę używania \DeclearRobustCommand, o którym wspomniał @Stefan w komentarzu do swojej odpowiedzi. Dlatego \protact nie jest już potrzebny.


Kod:

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

Wynik:

Komentarze

  • znasz opcję minimum size dla węzłów?
  • @percusse Przepraszamy, ale Nie ' cię nie rozumiem.
  • Możesz zdefiniować minimalny rozmiar dla węzłów koła bez ramki lub fantomu o jednakowym rozmiarze.
  • @percusse That ' to dobra sugestia jednak nie ' nie sądzę, że rozumiesz ideę zawartą w moim poście. Zaprojektowałem ten opcjonalny parametr, aby ujednolicić rozmiar okręgów, ponieważ okręgi o różnych rozmiarach, które są wyrównane razem, będą wyglądać nieprzyjaźnie.

Odpowiedź

Jeszcze łatwiej:

\textcircled{\small{2}} 

lub

{\large \textcircled{\small 2}} 

lub

{\Large \textcircled{\normalsize 2}} 

[ed. Segletes, dostarczając obraz MWE &]

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

Renderowanie LaTeX powyższego pliku .tex

Komentarze

  • To może działać, gdy okrąg nie jest otoczony tekstem, a rozmiar czcionki numeru nie stanowi problemu – ale ' d raczej używam jednego z innych rozwiązań zamiast tego.
  • Czy możemy odwrócić kolory wewnątrz koła?

Odpowiedz

to odpowiedź została przekonwertowana w pakiecie na CTAN: https://ctan.org/pkg/circledsteps

Wszystkie odpowiedzi są ładne, a zwłaszcza tikz jest bardzo konfigurowalny. Ale jest problem: nie można go bezpiecznie używać w innych tikzpicture s. Więc połączyłem kilka rzeczy i zaimplementowałem to:

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

Przykład użycia

Komentarze

  • Świetnie wygląda! (+1)

Odpowiedz

z domyślnymi poleceniami obrazka:

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

tekst alternatywny

Odpowiedź

With Plain (natknąłem się na to przypadkiem i zapamiętałem to pytanie):

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

circlednums

Z XeTeX:

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

A może z 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 „/>

Cholera, Stefan pobił mnie ładniejszym.

Odpowiedź

Oto rozwiązanie \pdfliteral. Działa tylko z pojedynczymi liczbami.

\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 

tutaj wprowadź opis obrazu

Komentarze

  • Po co przekształcenia współrzędnych?
  • @percusse Właściwie właśnie skopiowałem kod z tutaj i trochę go zmodyfikowałem. Byłbym bardzo szczęśliwy, gdybyś mógł udostępnić jakieś zasoby, aby dowiedzieć się więcej o kodowaniu PDF.
  • W rzeczywistości jest to PostScript, ale PDF obsługuje również wiele obiektów graficznych. Dlatego ' jest nieco kłopotliwe, aby zrozumieć zestaw wszystkich operatorów obsługiwanych w formacie PDF. Ale przynajmniej aby zacząć czytać ten kod, możesz skorzystać z przewodnika adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/… . Również w specyfikacji ISO (tabela 59 w adobe.com/devnet/pdf/pdf_reference.html ) można rozpoznać operatory TikZ zmapowane na frontend;). Początkowym problemem do uchwycenia jest ustawienie obwiedni, reszta to zwykły zapis PS.

Odpowiedź

Używanie pifont pakiet i symbole od \ding{172} do \ding{211} z łatwością masz bardzo doskonałe liczby w kółkach, ale jeśli chcesz zakreślone liczby większe niż 10 mamy problem. Jak pokazali tutaj inni użytkownicy stosów wymiany stosów, możemy rozwiązać problem, jeśli liczby nie są zbyt duże, ale sprawy stały się trudne (złożone kody LaTeX) i możemy mieć problemy, jeśli piszemy w tekście (jeśli koło stało się duże, LaTeX może być zmuszonym do powiększania odstępów między liniami, a może do nakładania się kółka na sąsiednie górne i dolne linie): sprawa jest nieco prostsza, jeśli chcemy tylko zakreśloną liczbę na liście pozycji. Ten brak elastyczności może być w niektórych przypadkach uciążliwy. Wydaje się, że rozsądnym rozwiązaniem jest użycie pakietu tcolorbox : po próbach stwierdziłem, że musimy po prostu dodać to w preambule

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

i wywołaj w dokumencie komendę \ ciao, gdy chcemy „zakreślony” numer (na przykład: \ ciao {12} „zakreśli” liczbę 12). Nawiasem mówiąc, użycie fbox w wierszu preambuły jest ważne, ponieważ bez niego zaokrąglone pudełko mogłoby wystawać poza linię po lewej lub prawej stronie, gdy znajdują się na marginesie wiersza: byłoby to bardzo nieestetyczne.

Wracając, widzę w tym rozwiązaniu 3 zalety i 1 wady:

  • pros : prosty kod, dobra praca również wewnątrz tekstu, elastyczność (także duże liczby & na wypadek, gdybyśmy mogli łatwo bawić się obramowaniami lub kolorami: patrz 0,5 pkt lub czarny & biały w wierszu preambuły).
  • cons : nie mamy kółek, ale zaokrąglone pole, ale uważam to za rozsądny kompromis.

Przykładem zastosowania tej metody jest

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. 

co daje

tutaj wprowadź opis obrazu

zwróć uwagę, że liczby nie wystają, a odstępy między wierszami są zawsze takie same: bez względu na to, czy mamy liczbę, czy nie. Krótko mówiąc, te prawie zakreślone liczby działają bardzo dobrze, nawet jeśli znajdują się wewnątrz tekstu.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *