Guter Weg, um \ textcircled Zahlen zu machen?

Diese Frage führte zu einem neuen Paket:
circledsteps

Ich versuche, mit dem einfachen Befehl einige gut aussehende Zahlen in einem Kreis zu erstellen:

\textcircled{1} 

Der Kreis ist jedoch vertikal falsch mit der Zahl ausgerichtet und sieht etwas schlampig aus:

Alternativtext

Vorschläge, wie dies möglich ist Ich passe die vertikale Ausrichtung so an, dass die Zahlen in Bezug auf die Kreise zentrierter aussehen. Oder, wenn dies keine Option ist, welche anderen Möglichkeiten, um die gleichen Ergebnisse zu erzielen, sind möglich?

Ich werde nur diese verwenden Für Zahlen und an sehr wenigen Stellen ist eine manuelle Anpassung pro Glyphe eine Option.

Ich verwende pdfLaTeX mit Computer Modern, wenn dies wichtig ist.

Kommentare

  • Ich habe hier zwei gute Antworten für weniger als 30 Minuten erhalten utes (ihr seid schnell!). Ich ‚ werde wahrscheinlich eines Tages eine Community-Wiki-Antwort geben, in der alle Optionen zusammengefasst sind. Vielleicht werden in der Zwischenzeit einige andere Lösungen hinzukommen.
  • I ‚ Ich habe keinen Schlaf, das ‚ ist der Grund!
  • Welches Paket bietet \textcircled?
  • @Matthew: Es scheint in LaTeX integriert zu sein. Funktioniert sofort.
  • Sie können Unicode verwenden. U + 2460-2473 für 1 bis 20, U + 24EA für 0, U + 3251-325F für 21-35 und U + 32B1-32BF für 36-50.

Antwort

Hier „ist eine TikZ-Lösung:

\documentclass{article} \usepackage{tikz} \newcommand*\circled[1]{\tikz[baseline=(char.base)]{ \node[shape=circle,draw,inner sep=2pt] (char) {#1};}} \begin{document} Numbers aligned with the text: \circled{1} \circled{2} \circled{3} end. \end{document} 

alt text

Es ist nur ein Knoten. TikZ-Optionen werden verwendet, um die Basislinie auszurichten, die Größe anzupassen und die Kreisform zu erhalten. Sie können weitere Optionen hinsichtlich Größe oder Kreisdicke auswählen (Option thick). Es gibt noch mehr: Sie können die Knoten beispielsweise sogar mit einem anderen Argument benennen, um sie durch Pfeile zu verbinden später.

Wenn man es beispielsweise für eine Aufzählungsliste verwenden möchte, ist es einfach, muss aber geschützt werden:

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

Alternativtext

Kommentare

  • Süßes Beispiel! Ich hatte in der Vergangenheit Probleme mit TikZ-Beispiele inline, aber jetzt sehe ich, dass dies durch baseline=(char.base) gelöst wird. Cool.
  • @Stefan: Vielleicht sollten Sie \newcommand von \DeclareRobustCommand, so dass die \protect nicht mehr benötigt wird, was benutzerfreundlicher ist.
  • Dann sollte man \ newcommand verwenden, um eine leere Befehlsfaust zu deklarieren, und dann \ DeclareRobustCommand verwenden. Auf diese Weise gibt ein vorhandener Befehl einen Fehler aus.
  • @LuisFelipeVillavicencioLopez Sicher! Kommentare sind Nicht das Beste für Code-Diskussionen. Stellen Sie vielleicht eine neue Frage oder lassen Sie ‚ in der LaTeX-Community sprechen, in der ich täglich poste.
  • Das ist schön, aber das Problem ist, dass es ‚ nicht in einem \tikzpicture — like verwendet werden kann, z Beispiel: Knotentext oder Beschriftung. Gibt es eine Lösung für eine “ universelle “ schöne eingekreiste Zahlen? Eine Referenz finden Sie unter tex.stackexchange.com/questions/496348/…

Antwort

Ich war angenehm überrascht, wie viele Leute beschlossen, es auszuprobieren, und es tauchten viele interessante Lösungen auf. Gemäß der Tradition wird diese Antwort ein Community-Wiki sein und alle vorgeschlagenen Lösungen zusammenfassen und vergleichen.


Ich schlage hiermit drei verschiedene Bewertungskriterien vor, die jeweils von 1 bis 5 bewertet werden:

  • Einfachheit . Dies ist ein Maß dafür, wie einfach es ist, die vorgeschlagene Lösung zu verwenden. Punkte, die für die Verwendung zusätzlicher Pakete oder die Definition eines anderen als eines einfachen Komfortmakros abgezogen werden.
  • Flexibilität . Dies beinhaltet in erster Linie, wie einfach dies in anderen Kontexten zu verwenden ist, in diesem Fall bei unterschiedlichen Rahmenformen, -größen und -dicken.
  • Genauigkeit . Einfach ausgedrückt, wie ästhetisch die Lösung aussieht, insbesondere wie gut die Glyphe im Kreis zentriert ist und wie sie zum umlaufenden freilaufenden Text passt.

Los gehts:

  1. Die raisebox -Lösung.

    Vielen Dank an Jimi Oke für die schnellen Finger. Dies kam zuerst und ist das, was ich besonders für die Anwendung mag, die ich im Sinn hatte. Es ist so einfach wie:

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

    Mehr als das. Einfacher geht es nicht.Solide 5/5 , da keine zusätzlichen Pakete erforderlich sind und die unhandliche Definition in einem Einzeiler \def.

    In Bezug auf die Flexibilität ist diese Lösung recht niedrig, da Sie keine Kontrolle über die Kreisgröße oder die Parameter haben (ich bin sicher, dass einige TeX-Hacker dies tun würden beweise mir das Gegenteil, aber aus Liebe zu $ DEITY ersparen Sie uns solche Greuel. 2/5 ist hier wohlverdient. {1}

    Das Genauigkeitsproblem ist wie immer subjektiv, aber Sie müssten mit den vertikalen Abständen herumspielen, um es genau richtig ™ für die von Ihnen verwendete Schrift zu erhalten ausgewählt haben. 2/5 .

  2. Die ding -y Lösung.

    Dies kam von TH. , was die Verwendung einiger vordefinierter Symbolzeichen vorschlägt. Das allwissende Symbol-a4-Dokument besagt, dass der einzig wahre Weg, dies zu tun, darin besteht, Folgendes zu verwenden:

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

    Oder sogar die Go-Board-Nomenklatur:

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

    Auf der Seite der Einfachheit liegt diese Rate bei 4,5 / 5 , obwohl ich es aufgrund der zusätzlichen Pakete nur ungern mit einer Straigt 5 bezeichne.

    Dies ist überhaupt nicht flexibel. Wenn Sie die Glyphen nicht mögen, sind Sie allein. 1/5 .

    Die Glyphen selbst sind, wie zu erwarten, gut gestaltet und die Zahlen sind Optisch gut auf die Kreise ausgerichtet. Wenn Sie jedoch eine Schrift mit einem bestimmten Stil haben, passt die Zahlenschrift möglicherweise nicht gut zum Text.

  3. Die obligatorische tikz Lösung.

    Ahh, das gibt es immer, nicht wahr? Dies liegt an 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} 

    Ich persönlich stehe nicht auf tikz (ich weiß Ich sollte es eines Tages lernen. Daher wäre es für mich eine einmalige Verwendung des Pakets, die ich vermeiden möchte. Ich kann hier nicht mehr als 2/5 geben, aber die tikz Fanboiz (und Galz!) sollten dies bis auf 4/5 erhöhen.

    As Was die Flexibilität betrifft: Dies ist die eigentliche Sache. Ausgerechnet Stefan hat sogar gezeigt, wie man die eingekreisten Symbole mit aufgezählten Listen verwendet. Unterschiedliche Rahmenformen sind mit unterschiedlichem Anpassungsgrad um die Glyphe durchaus möglich. Unbestreitbar 5/5 .

    Die Grundlinienausrichtung ist erstklassig, ohne mit manuellen Anpassungen herumzuspielen, was sehr schön ist. Der Abstand um das Symbol sieht gut aus, obwohl der Kreis im freilaufenden Text vorzugsweise eine engere Anpassung um die Zahl haben sollte, was durch Herumspielen mit dem Parameter inner sep in erreicht werden kann die Befehlsdefinition. 5/5 hier.

  4. pict2e / picture Lösung

    Eine späte Hinzufügung von Herbert schlägt vor, einige grundlegende Grundelemente aus den Paketen picture und pict2e zu verwenden. Hier ist:

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

    In Bezug auf die Einfachheit ist dies nicht besonders gut. Es sieht ein bisschen verworren aus, obwohl es nach dem Studium definitiv verständlich ist und verwendet wird zwei zusätzliche Pakete. 2/5 ist hier eine vernünftige Punktzahl.

    Flexibilität ist nicht ganz aufgebaut. Der Kreisradius kann angepasst werden, indem der Faktor 1.5 geändert wird, und die Grundlinienanpassung kann mit gespielt werden. 3.5 / 5 .

    In dieser Definition berührt die Grundlinie des umgebenden Textes den Kreis, anstatt mit dem eingekreisten ausgerichtet zu sein Zahlenbasis. Dies kann unter bestimmten Umständen wünschenswert sein, aber die Zahlen sehen auf diese Weise etwas fehl am Platz aus. Bessere Ergebnisse können mit einigen zusätzlichen Berechnungen beim Platzieren der Kästchen und einem 3.5 / 5 wird hier zum Reflektieren angegeben t dieses Potenzial.

  5. Die andere obligatorische tikz Lösung

    Matthew Leingang und morbusg haben sich daran versucht, und obwohl ihre Bemühungen sicherlich gewürdigt werden, halte ich Stefans Lösung für einfacher. Ich bin dankbar für die Mühe (und Ihre Demut) und habe Ihre beiden Antworten positiv bewertet.

Endergebnis:

  • Einfachheit : raisebox
  • Flexibilität : tikz
  • Genauigkeit : gebunden zwischen tikz und ding

Insgesamt: tikz, ohne zu zögern ( Akklamation aus der Öffentlichkeit, Hüte geworfen, Taschentücher winkten und so weiter.

Zum Schluss noch ein 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} Wenn jemand beschließt, so etwas zu schreiben, lassen Sie es mich wissen und ich werde es ohne zusätzliche Kosten in diese Antwort aufnehmen. Beachten Sie jedoch, dass der Beitrag anschließend mit um schwache Nerven zu schützen.

Kommentare

  • ausgezeichnete Zusammenfassung, gut gemacht! Beiträge wie dieser machen diese Site lohnenswert.
  • @Yiannis ‚ Es ist einige Zeit her, seit ich die Frage gestellt habe, aber ich habe erst jetzt Zeit gefunden, sie zu polieren die Zusammenfassung. Ich hoffe, es wird für Menschen mit dem gleichen Problem von Nutzen sein.
  • Sie sagen: “ Der Abstand um das Symbol sieht in Ordnung aus, obwohl er frei läuft Text Der Kreis sollte vorzugsweise enger um die Zahl passen. “ Dies kann leicht behoben werden, indem inner sep=2pt in in der Befehlsdefinition \circled.
  • @Matt: Sicher – ich wollte hier auf ein ästhetisches Problem hinweisen, aber ich denke Ich war mir nicht ganz sicher, ‚. Die Informationen darüber, was geändert werden muss, werden jetzt in der Post erwähnt. Vielen Dank.
  • @MartinTapankov Das Problem wird mit der Raisebox gelöst, vorausgesetzt, jedem Aufruf wird \ protected vorangestellt.

Antwort

Die schnellste Lösung wäre die Verwendung des Befehls \raisebox. Ich habe ein bisschen damit herumgespielt, und es scheint, als würde das Verringern des Textes um 0,9pt die Zahl ungefähr in die Mitte stellen:

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

Sie könnten herumspielen damit das absolute Zentrum zu bekommen, aber es ist definitiv zwischen 0,9 und 1pt. Ich habe die Idee hier . Es scheint, dass der Befehl \textcircled am besten für Text funktioniert! Dies sollte jedoch Ihr Problem lösen.

Kommentare

  • Das ‚ wird sich ändern die Basislinie der Zahlen, die möglicherweise nicht wünschenswert sind. Aber vielleicht könnten mit einem äußeren \raisebox, um die gesamte eingekreiste Zahl zu erhöhen, Basislinien beibehalten werden.
  • Mais oui! Ich hätte selbst daran denken sollen. Vielen Dank! Ich ‚ werde ein wenig auf weitere Vorschläge warten, bevor ich dies als akzeptiert markiere.
  • @TH. Stimmt, aber das spielt für mich keine Rolle ‚ – die Zahlen erscheinen nicht im freilaufenden Text, sondern sind Überschriften für Tabellenspalten oder werden zum Beschriften verwendet.
  • Tatsächlich hat die Ausgabe \textcircled jedoch bereits eine niedrigere Grundlinie mit oder ohne \raisebox. Wenn der Autor also alles Flush bevorzugt, sollte er sich für pifont entscheiden. Bei einer äußeren \raisebox ist das Maximum eine Erhöhung um 0,5 Punkte, wodurch der Kreis wieder an seine ursprüngliche Position gebracht wird, die jedoch nicht mit dem Text übereinstimmt. Wenn Sie alles über 0,5pt hinaus erhöhen, wird die Zahl und nicht der Kreis verschoben, wodurch die anfänglichen Bemühungen zunichte gemacht werden. Wenn der Autor also ein gutes \textcircled möchte, dann ist hier ‚ eins: \raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {8}} } . Das ist eigentlich ziemlich gut.
  • @Martin: Möglicherweise erhalten Sie auch einen TikZ-Vorschlag. 😉

Antwort

morbusg bereits erwähnt dass einige Schriftarten Zahlen wie Unicode-Glyphen eingekreist haben und gezeigt haben, wie sie direkt eingebettet werden. Einige Schriftarten bieten eine benutzerfreundlichere Oberfläche für den Zugriff auf die Nummern, z. Linux Libertine und Junicode. Dies bedeutet natürlich, dass wir von Ihrer Anforderung zur Verwendung von Computer Modern abweichen. Der Vorteil dieser Unicode-Nummern besteht vermutlich darin, dass sie von einem Schriftdesigner erstellt wurden, sodass keine Feinabstimmung erforderlich sein sollte.

Hier ist ein einfacher Proof-of-Concept (dies ist auch erforderlich) habe das junicode -Paket installiert):

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

Ausgabe

Diese Methoden werden in den jeweiligen Dokumentationen beschrieben.

Hier finden Sie eine noch komfortablere Möglichkeit, auf diese Nummernsätze zuzugreifen. Die doppelt eingekreisten Zahlen sind (pro Unicode) von 1 bis 10 verfügbar, die anderen von 0 bis 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} 

Ausgabe

Kommentare

  • Ich denke, das funktioniert nicht mit pdflatex.
  • @moose Ja. Ich muss überprüfen, ob das erste Codebit mit dem aktuellen funktioniert libertine überhaupt (aber dann sollte pdfLaTeX in Ordnung sein), das zweite Bit ist nur XeLaTeX / LuaLaTeX, das sollte ich auch in die Antwort einfügen.

Antwort

PGF ist für diese eine Anwendung übertrieben, aber wenn Sie es bereits geladen haben, können Sie es verwenden:

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

Snippet-Ausgabe

Wie Sie sehen, gibt es im Vergleich zu \textcircled aber es ist nicht schlecht.

Pre-Post-Bearbeitung: Ich sehe, dass Stefan und Morbusg mich bis zum Anschlag geschlagen haben. Na ja.

Kommentare

  • Ich denke, ein externer Prozess ist in der Tat übertrieben für etwas, das in LaTeX ausgeführt werden kann. Sie können es genauso einfach erstellen wie \ newcommand {\ Ring} [1] {\ raisebox {-1pt} {\ begin {tabellarisch} {@ {} c @ {}} {\ small # 1} \ [ -11.5pt] \ BigCircle \ end {tabellarisch}}}. Die automatische Anpassung der Abmessungen bleibt dem Leser als Übung überlassen 🙂
  • Peter, welcher externe Prozess?
  • @ u0b34a0f6ae: Ich denke, Peter bezieht sich auf die Tatsache, dass tikz verwendet eine Reihe von \special -Befehlen, die hinzugefügt werden, nachdem TeX die Eingabe verarbeitet hat. ‚ ist also „extern“ zum normalen TeX-Verdauungssystem.

Antwort

Aus symbols.pdf geht hervor, dass pifont mit \ding{172} bis oder \ding{192} bis \ding{201}.

Oder die igo Paket mit \whitestone{1} bis \whitestone{99}, obwohl dies zum Setzen von Go-Boards gedacht ist.

Es hört sich so an, als wäre die Lösung gefunden worden, aber hier ist ein einfacher Vergleich.

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

Bildbeschreibung hier eingeben

Kommentare

  • Dies ist eine großartige Lösung. Die Pifonts sind jedoch im Vergleich zur Ausgabe \textcircled ziemlich gequetscht. Der Vorteil ist jedoch, dass die Pifonts bündig mit dem Text sind, was für den Autor eine gute Sache sein kann.
  • @TH: Schön. Was macht das textcomp-Paket?
  • @Jimi: Ich dachte, es wäre für \textcircled erforderlich. Ich habe mich geirrt (Ich habe mir Tabelle 17 von Symbols.pdf angesehen und festgestellt, dass textcomp für \newtie erforderlich ist, aber ich war nicht ‚ nicht sorgfältig genug lesen.) Ich ‚ habe den Code aktualisiert.
  • @PatrickT Vielen Dank für das Bild. ‚ ist eine gute Ergänzung.

Antwort

Die mathdesign definiert \figurecircled mit einem besseren Abstand für Zahlen als \textcircled tut dies.

Das mathdesign-Paket ist nicht kompatibel mit amsfonts und amssymb Aber wenn Sie trotzdem eine Mathdesign-Schriftart verwenden, ist das kein Problem.

Kommentare

  • Diese Antwort wurde abgelehnt? Könnte jemand, der dies getan hat, erklären, warum er dies für eine schlechte Lösung des Problems hält?
  • Ich habe Sie nicht ‚ abgelehnt, aber ich habe einen Fehler mit einem einfachen Fehler erhalten Testdatei. Können Sie eine MWE bereitstellen? Meine Fehlermeldung: ! 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!

Antwort

@Stefan “ Die Antwort ist gut, aber ich habe seine Antwort verbessert.

Erstens, wenn \circled{1} und \circled{10} zusammengesetzt sind Da die beiden Kreise nicht dieselbe Größe haben, habe ich dem Befehl \circled einen optionalen Parameter hinzugefügt. Der optionale Parameter wurde als Platzhalter neu bewertet, um sicherzustellen, dass diese Kreise in der Liste angezeigt werden gleiche Größe.

Da ich außerdem \ifblank verwendet habe, das vom Paket etoolbox bereitgestellt wird, um zu überprüfen, ob der optionale Parameter angegeben wurde, Ich habe \robustify verwendet, um den Befehl robust zu machen. Dies umging den Nachteil der Verwendung von \DeclearRobustCommand, der von @Stefan in einem Kommentar zu seiner Antwort erwähnt wurde. Daher wird die \protact nicht mehr benötigt.


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} 

Ergebnis:

Kommentare

  • Sie kennen die Option minimum size für Knoten?
  • @percusse Entschuldigung, aber Ich verstehe dich nicht ‚.
  • Sie können eine Mindestgröße für Kreisknoten ohne Box oder Phantom mit einheitlicher Größe definieren.
  • @percusse Das ‚ ist ein guter Vorschlag ‚ glaube jedoch nicht, dass Sie die Idee in meinem Beitrag verstehen. Ich habe diesen optionalen Parameter entworfen, um die Größe der Kreise zu vereinheitlichen, da Kreise unterschiedlicher Größe, die zusammen ausgerichtet sind, ein unfreundliches Aussehen ergeben.

Antwort

Noch einfacher:

\textcircled{\small{2}} 

oder

{\large \textcircled{\small 2}} 

oder

{\Large \textcircled{\normalsize 2}} 

[ed. Segletes mit 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-Rendering der obigen .tex-Datei

Kommentare

  • Dies Möglicherweise funktioniert , wenn der Kreis nicht von Text umgeben ist und die Schriftgröße der Zahl kein Problem darstellt. Ich ‚ verwende jedoch lieber eine der anderen Lösungen Stattdessen.
  • Können wir die Farben innerhalb des Kreises invertieren?

Antwort

dies Die Antwort wurde in ein Paket in CTAN konvertiert: https://ctan.org/pkg/circledsteps

Die Antworten hier sind alle schön, und vor allem die tikz ist sehr konfigurierbar. Aber es gibt ein Problem: Sie können es nicht sicher in anderen tikzpicture verwenden. Deshalb habe ich einige Dinge zusammengeführt und Folgendes implementiert:

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

Anwendungsbeispiel

Kommentare

  • Sieht gut aus! (+1)

Antworte

mit den Standardbildbefehlen:

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

Alternativtext

Antwort

Mit Plain (zufällig darauf gestoßen und an diese Frage erinnert):

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

eingekreiste

Mit XeTeX:

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

Oder vielleicht mit 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 =“ Gehostet von imgur.com „/>

Verdammt, Stefan hat mich mit einem schöneren geschlagen.

Antwort

Hier ist eine \pdfliteral -Lösung. Dies funktioniert nur für einzelne Zahlen.

\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 

Geben Sie hier die Bildbeschreibung ein.

Kommentare

  • Warum die Koordinatentransformationen?
  • @percusse Eigentlich habe ich gerade Code von hier kopiert und ein wenig geändert. Wenn Sie Ressourcen bereitstellen können, um mehr über die PDF-Codierung zu erfahren, würde ich mich sehr freuen.
  • Es handelt sich tatsächlich um PostScript, aber PDF unterstützt auch viele Grafikobjekte. Daher ist es ‚ etwas umständlich, die Menge aller in PDF unterstützten Operatoren zu verstehen. Zumindest um diesen Code zu lesen, können Sie das Referenzhandbuch adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/ . Auch in der ISO-Spezifikation (Tabelle 59 in adobe.com/devnet/pdf/pdf_reference.html ) können Sie die TikZ-Operatoren erkennen, die dem Frontend zugeordnet sind;). Das anfängliche Problem besteht darin, den Begrenzungsrahmen einzurichten. Der Rest ist die übliche PS-Notation.

Antwort

Verwenden von pifont -Paket und Symbole von \ding{172} bis \ding{211} Sie haben leicht sehr gute eingekreiste Zahlen, aber wenn Sie eingekreist werden möchten Zahlen größer als 10 haben wir ein Problem. Wie andere Stackexchange-Benutzer hier gezeigt haben, können wir das Problem lösen, wenn die Zahlen nicht zu groß sind, aber die Dinge schwierig wurden (komplexe LaTeX-Codes), und wir können Probleme haben, wenn wir in einen Text schreiben (wenn der Kreis groß wird, kann LaTeX gezwungen sein, den Abstand zwischen den Zeilen zu vergrößern oder den Kreis auf benachbarten oberen und unteren Zeilen zu überlappen): Die Dinge sind etwas einfacher, wenn wir nur eine eingekreiste Zahl in einer Auflistungsliste haben möchten. Dieser Mangel an Flexibilität könnte in einigen Fällen störend sein. Eine vernünftige Lösung scheint das tcolorbox -Paket zu verwenden: Nach Versuchen stellte ich fest, dass wir in der Präambel einfach dieses

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

und hinzufügen müssen Rufen Sie im Dokument den Befehl \ ciao auf, wenn wir eine „eingekreiste“ Nummer wünschen (Beispiel: \ ciao {12} „umkreist“ die Nummer 12). Übrigens ist die Verwendung von fbox in der Präambelzeile wichtig, da ohne sie eine abgerundete Box links oder rechts aus der Zeile herausragen könnte, wenn sie sich am Rand der Zeile befindet. Dies wäre sehr unästhetisch.

In dieser Lösung sehe ich 3 Vor- und 1 Nachteile:

  • Vorteile : einfacher Code, gute Arbeit in einem Text, Flexibilität (auch große Zahlen & für den Fall, dass wir leicht mit Rändern oder Farben spielen können: siehe 0.5pt oder schwarz & weiß in der Präambelzeile).
  • cons : Wir haben keine Kreise, sondern ein abgerundetes Kästchen, aber ich halte dies für einen vernünftigen Kompromiss.

Ein Beispiel für die Anwendung dieser Methode ist

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. 

, das

gibt hier die Bildbeschreibung ein

Bitte beachten Sie, dass Zahlen nicht hervorstehen und dass der Abstand zwischen den Zeilen immer gleich ist: egal ob wir eine Zahl haben oder nicht. Kurz gesagt, diese fast eingekreisten Zahlen funktionieren sehr gut, selbst wenn sie sich in einem Text befinden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.