\ textcircled番号を作成する良い方法は?

この質問により、新しいパッケージが作成されました。
circledsteps

簡単なコマンドを使用して、見栄えの良い数字を円で作成しようとしています:

\textcircled{1} 

ただし、円は数字と垂直方向にずれており、少しずさんなように見えます:

代替テキスト

数字が円に対してより中央に見えるように垂直方向の配置を調整しますか?または、それがオプションでない場合、同じ結果を達成する他の方法はありますか?

これらのみを使用します数字の場合、およびごくわずかな場所であるため、グリフごとに手動で調整することもできます。

必要に応じて、ComputerModernでpdfLaTeXを使用しています。

コメント

  • 30分以内に、ここで2つの良い答えを得ましたutes(君たちは速い!)。 I ‘おそらく、コミュニティwikiの回答で、最近のすべてのオプションを要約します。その間に、他の解決策が登場するかもしれません。
  • I ‘睡眠不足、その’理由!
  • どのパッケージが\textcircled
  • @Matthew:LaTeXに組み込まれているようです。箱から出して動作します。
  • Unicodeを使用できます。 1〜20の場合はU + 2460-2473、0の場合はU + 24EA、21〜35の場合はU + 3251〜325F、36〜50の場合はU + 32B1-32BF。

回答

ここで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} 

代替テキスト

これは単なるノードです。 TikZオプションは、ベースラインの位置合わせ、サイズの調整、および円の形状の取得に使用されます。サイズや円の太さに関するオプションを自由に選択できます(オプションthick)。さらに、たとえば、別の引数でノードに名前を付けて、矢印で接続することもできます。後で。

たとえば、列挙リストに使用する場合は、簡単ですが、保護する必要があります。

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

代替テキスト

コメント

  • すばらしい例!過去に使用して問題が発生しましたTikZの例はインラインですが、baseline=(char.base)で解決されていることがわかりました。かっこいいです。
  • @Stefan:おそらく\newcommand by \DeclareRobustCommand、このように\protectは不要になり、よりユーザーフレンドリーになりました。
  • 次に、\ newcommandを使用して空のコマンドフィストを宣言してから、\ DeclareRobustCommandを使用する必要があります。そうすると、既存のコマンドでエラーが発生します。
  • @LuisFelipeVillavicencioLopezもちろんです!コメントはコードの議論には最適ではありません。おそらく、新しい質問を投稿するか、私が毎日投稿する LaTeXコミュニティで’に話をさせてください。
  • これは素晴らしいことですが、問題は、’が\tikzpicture内で使用できないことです。たとえば、ノードテキストまたはラベル。 “ユニバーサル”の丸で囲んだ数字の解決策はありますか?参考までに、 tex.stackexchange.com/questions/496348/ …

を参照してください。

回答

多くの人が試してみることにしたのは嬉しい驚きで、興味深い解決策がたくさん出てきました。伝統に従って、この回答はコミュニティwikiであり、提案されたすべての解決策を要約して比較します。


ここに、それぞれ1から5までの3つの異なる評価基準を提案します。

  • シンプルさ。これは、提案されたソリューションを使用することがどれほど簡単かを示す尺度です。追加のパッケージを使用したり、単純な便利なマクロ以外のものを定義したりすると差し引かれるポイント。
  • 柔軟性。これには主に、他のコンテキスト、この場合はさまざまなフレームの形状、サイズ、厚さでこれを使用するのがいかに簡単かが含まれます。
  • 精度。簡単に言えば、ソリューションがどのように美しく見えるか、特にグリフが円周の中心にどれだけうまく配置されているか、そしてそれが周囲のフリーランニングテキストにどのように適合するか。

ここに行きます:

  1. raiseboxソリューション。

    速い指をくれた Jimi Oke に感謝します。これが最初に登場し、私が念頭に置いていたアプリケーションで特に気に入っているものです。簡単にできます:

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

    それ以上のことはありません。シンプルさの面では、これ以上のことはありません。堅実な 5/5 、追加のパッケージは不要であり、扱いにくい定義は1つのライナーで簡単に抽象化できます\def

    柔軟性に関しては、円のサイズやパラメーターを制御できないため、このソリューションの評価は非常に低くなります(一部のTeXハッカーはきっとそうするでしょう)私が間違っていることを証明しますが、 $ DEITY の愛のために、そのような忌まわしさを惜しまないでください。) 2/5 はここで十分に値します。{1}

    精度の問題はいつものように主観的ですが、タイプフェイスにぴったり(tm)になるように、垂直方向の距離をいじる必要があります。を選択しました。 2/5

  2. ding -yソリューション。

    これは TH。からのもので、事前定義された記号グリフの使用を示唆しています。全知のシンボル-a4ドキュメントによると、それを行うための1つの真の方法は、次を使用することです。

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

    または囲碁ボードの命名法:

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

    単純さの面では、これは 4.5 / 5 で評価されます。余分なパッケージが含まれているため、私はそれにstraigt5を与えることには消極的です。

    これはまったく柔軟性がありません。グリフが気に入らない場合は、自分で行ってください。 1/5

    グリフ自体は、予想どおりに適切に設計されており、その数は次のとおりです。視覚的に円とうまく位置合わせされています。異なるスタイルの活字を使用している場合でも、数字のフォントはテキストとうまく一致しない可能性があります。

  3. 必須のtikzソリューション。

    ああ、いつもそうですよね。これは 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} 

    個人的には、tikzには興味がありません(私は知っています、私は最近それを学ぶ必要があります)、それでこれで行くことは私にとってパッケージの1回限りの使用であり、私は避けたいと思います。ここでは 2/5 を超えることはできませんが、tikz fanboiz(およびgalz!)は、これを 4/5 まで上げる必要があります。

    As柔軟性に関する限り、これは本物です。Stefanは、列挙されたリストで丸で囲んだ記号を使用する方法さえ示しました。グリフの周囲の適合度を変えて、さまざまなフレーム形状が確かに可能です。議論の余地のない 5/5

    ベースラインの配置は、手動で調整することなく一流であり、非常に便利です。シンボルの周囲の間隔は問題ないように見えますが、フリーランニングテキストでは、円は数値の周囲にぴったりと収まる必要があります。これは、のinner sepパラメータをいじることで実現できます。コマンド定義。 5/5 ここ。

  4. pict2e / pictureソリューション

    Herbertによる後期追加は、pictureおよびpict2eパッケージのいくつかの基本的なプリミティブを使用することを提案しています。

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

    単純さの面では、これはあまり評価されていません。少し複雑に見えますが、調べてみると間違いなく理解できます。 2つの追加パッケージ。 2/5 はここでは妥当なスコアです。

    柔軟性は十分に構築されていません- 1.5係数を変更することで円の半径を調整でき、ベースライン調整を使用できます。 3.5 / 5

    この定義では、周囲のテキストのベースラインは、円で囲まれているのではなく、円に接しています。数値ベース。これは状況によっては望ましい場合がありますが、このように数値が少しずれているように見えます。ボックスを配置するときにいくつかの追加の計算を行い、 3.5 / 5 はここで反射するために与えられていますこの可能性。

  5. 他の必須のtikzソリューション

    Matthew Leingang morbusg はこれを試してみました。彼らの努力は確かに評価されていますが、Stefanの解決策はもっと簡単だと思います。私は努力(そしてあなたの謙虚さ)に感謝し、あなたの両方の答えに賛成しました。

最終スコア:

  • シンプルさraisebox
  • 柔軟性tikz
  • 精度tikzおよびding

全体:tikz、ためらうことなく(国民からの称賛、帽子をかぶった、ハンカチを振ったなど)。

最後に、いくつかのテストコード:

\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}誰かが そのようなことを書くことにした場合は、私に知らせてください。追加料金なしでこの回答に含めますが、投稿には後で心の弱い人を保護します。

コメント

  • すばらしい要約です。よくできました!このような投稿は、このサイトを価値のあるものにします。
  • @Yiannis It ‘質問を投稿してからしばらく経ちましたが、磨く時間はたった今しか見つかりませんでした。サマリー。同じ問題を抱えている人にも役立つことを願っています。
  • “自走式ではありますが、記号の周囲の間隔は問題ないようです。テキスト円は、できれば数字の周りにぴったりと合わせる必要があります。”これは、inner sep=2pt\circledコマンド定義内。
  • @Matt:もちろんです。ここでの私の意図は美的問題を指摘することでしたが、私は推測します。 ‘それについてははっきりしていませんでした。何を変更する必要があるかについての情報は、現在、投稿に記載されています。ありがとう。
  • @MartinTapankovすべての呼び出しの前に\ protectが付いていれば、raiseboxで問題を解決できます。

回答

最も簡単な修正は、\raiseboxコマンドを使用することです。少し遊んだことがありますが、テキストを0.9pt下げると、図がほぼ中央に配置されます。

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

遊んでみてください。絶対中心を取得するためにそれを使用しますが、それは間違いなく0.9から1ptの間です。 ここでアイデアが浮かびました。 \textcircledコマンドはテキストに最適なようです。しかし、とにかく、これで問題は解決するはずです。

コメント

  • その’は変更されます望ましくない可能性のある数値のベースライン。しかし、おそらく外側の\raiseboxを使用して円で囲まれた数値全体を上げると、ベースラインを維持できます。
  • Mais oui!私はこれを自分で考えるべきだった。ありがとう! ‘これを承認済みとしてマークする前に、もう少し提案を待ちます。
  • @TH。本当ですが、それは私にとっては重要ではありません。’数字はフリーランニングテキストには表示されませんが、テーブル列のヘッダーまたはラベル付けに使用されます。
  • しかし、実際には、\textcircledの出力は、\raiseboxの有無にかかわらず、すでにベースラインが低くなっています。したがって、作成者がすべてフラッシュすることを好む場合は、pifontを選択する必要があります。外側の\raiseboxの場合、最大値は0.5ポイントのレイズです。これにより、円は元の位置に戻りますが、テキストと同じ高さにはなりません。すべてを0.5ptを超えて上げると、円ではなく数がシフトし始め、最初の努力が無効になります。したがって、作成者が適切な\textcircledを必要とする場合は、ここに’ 1つ:\raisebox{.5pt}{\textcircled{\raisebox{-.9pt} {8}} } 。これは実際にはかなり良いです。
  • @Martin:TikZの提案も得られるかもしれません。 😉

回答

すでに述べたmorbusg 一部のフォントでは、ユニコードグリフのように数字を囲んでおり、それらを直接埋め込む方法を示しています。一部のフォントは、番号にアクセスするためのよりユーザーフレンドリーなインターフェースを提供します。 LinuxLibertineとJunicode。明らかに、これは、ComputerModernを使用するというお客様の要件から逸脱していることを意味します。これらのUnicode番号の利点は、おそらくフォントデザイナーによって作成されたものであるため、微調整する必要がないことです。

ここに簡単な概念実証があります(また、 junicodeパッケージをインストールします):

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

出力

これらの方法はそれぞれのドキュメントで説明されています。

これらの番号のセットにアクセスするさらに快適な方法があります。二重丸の数字は(Unicodeごとに)1から10まで、その他は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} 

出力

コメント

  • これはpdflatexでは機能しないと思います。
  • @mooseはい..最初のコードビットが現在のコードビットで機能するかどうかを確認する必要がありますlibertine(ただし、pdfLaTeXで問題ないはずです)、2番目のビットはXeLaTeX / LuaLaTeXのみであり、それも回答に含める必要があります。

回答

PGFは、この1つのアプリケーションではやり過ぎですが、すでにロードされている場合は、次のように使用できます。

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

スニペット出力

ご覧のとおり、\textcircledでも、悪くはありません。

前後の編集:Stefanとmorbusgが私を打ち負かしました。まあ。

コメント

  • LaTeX内で実行できることに対して、外部プロセスは確かにやり過ぎだと思います。 \ newcommand {\ Ring} [1] {\ raisebox {-1pt} {\ begin {tabular} {@ {} c @ {}} {\ small#1} \ [ -11.5pt] \ BigCircle \ end {tabular}}}。寸法の自動調整は、読者の練習問題として残されています:-)
  • ピーター、どのような外部プロセスですか?
  • @ u0b34a0f6ae:ピーターはtikzは、TeXが入力を処理した後に追加された一連の\specialコマンドを使用します。したがって、’は通常のTeX消化システムの「外部」です。

回答

symbols.pdfから、pifont\ding{172}からまたは\ding{192}から\ding{201}

またはigoパッケージと\whitestone{1}から\whitestone{99}まで。ただし、これはGoボードの植字を目的としています。

解決策が見つかったようですが、ここでは「簡単な比較です。

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

ここに画像の説明を入力してください

コメント

  • これは優れたソリューションです。ただし、\textcircledの出力と比較すると、pifontはかなり押しつぶされています。ただし、プロは、pifontがテキストと同じ高さであるため、作成者にとっては良いことかもしれません。
  • @TH:いいですね。 textcompパッケージは何をしますか?
  • @Jimi:\textcircledに必要だと思いました。私は間違っていました。 (Symbols.pdfの表17を見ていましたが、textcomp\newtieに必要であると記載されていますが、’十分に注意深く読んでいません。)’コードを更新しました。
  • @PatrickT画像をありがとうございます。 ‘良い追加です。

回答

mathdesign パッケージは\figurecircledを定義します。これは

はそうです。

mathdesignパッケージはamsfontsおよびamssymbと互換性がありません。ただし、「とにかくmathdesignフォントを使用している場合は、問題ありません。

コメント

  • この回答は却下されましたか?これが問題の悪い解決策であると彼らが考える理由を誰が説明できますか?
  • 私はあなたに反対票を投じませんでした’しかし、単純なエラーが発生しましたテストファイル。 MWEを提供できますか?エラーメッセージ:! 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!

回答

@Stefan “答えは良いですが、私は彼の答えを改善しました。

まず、\circled{1}\circled{10}を一緒に配置すると、2つの円のサイズが同じにならないため、\circledコマンドにオプションのパラメーターを追加しました。これらの円が確実に表示されるように、オプションのパラメーターがプレースホルダーとして再評価されました。同じサイズ。

さらに、パッケージetoolboxで提供される\ifblankを使用して、オプションのパラメーターが提供されているかどうかを確認しました。 \robustifyを使用してコマンドを堅牢にしました。これにより、@ Stefanが回答のコメントで言及した\DeclearRobustCommandを使用することの欠点が回避されました。したがって、\protactは不要になります。


コード:

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

結果:

コメント

  • ノードのオプションminimum sizeをご存知ですか?
  • @percusse申し訳ありませんが、 ‘わかりません。
  • ボックスやファントムのない円ノードの最小サイズを均一なサイズで定義できます。
  • @percusse ‘良い提案ですただし、’私の投稿のアイデアを理解していないと思います。このオプションのパラメータは、円のサイズを均一にするように設計しました。サイズの異なる円を並べると見栄えが悪くなるためです。

回答

さらに簡単:

\textcircled{\small{2}} 

または

{\large \textcircled{\small 2}} 

または

{\Large \textcircled{\normalsize 2}} 

[ed。 Segletes、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} 

上記の.texファイルのLaTeXレンダリング

コメント

  • この円がテキストで囲まれておらず、数字のフォントサイズが問題にならない場合は、機能する可能性がありますが、’他の解決策のいずれかを使用したいと思います。代わりに。
  • 円の内側の色を反転できますか?

回答

これ回答はCTANのパッケージに変換されています: https://ctan.org/pkg/circledsteps

ここでの回答はすべてです素晴らしいです。特にtikzは大きく構成可能です。ただし、問題があります。他のtikzpicture内で安全に使用できないため、いくつかをマージして実装しました。

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

使用例

コメント

  • よさそうです!(+ 1)

回答

デフォルトの画像コマンドを使用:

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

代替テキスト

回答

プレーンあり(偶然これに遭遇し、この質問を思い出しました):

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

circlednums

XeTeXの場合:

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

または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 =” imgur.comがホスト “/>

くそー、ステファンはもっといいもので私を打ち負かしました。

答え

これが\pdfliteralソリューションです。単一の番号に対してのみ機能します。

\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 

ここに画像の説明を入力

コメント

  • なぜ座標変換を行うのですか?
  • @percusse実際、ここからコードをコピーして、少し変更しました。 PDFコーディングについてさらに学ぶためのリソースを提供していただければ幸いです。
  • 実際にはPostScriptですが、PDFは多くのグラフィックオブジェクトもサポートしています。そのため、PDFでサポートされているすべての演算子のセットを理解するのは’少し面倒です。ただし、少なくともこのコードを読み始めるには、リファレンスガイド adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/ … 。 ISO仕様( adobe.com/devnet/pdf/pdf_reference.html の表59)でも、フロントエンドにマップされたTikZ演算子を認識できます;)。把握する最初の問題は、境界ボックスの設定です。残りは通常のPS表記です。

回答

使用 pifont パッケージと\ding{172}から\ding{211}までの記号は、非常に優れた丸で囲まれた数字を簡単に作成できますが、丸で囲んだい場合は10より大きい数値には問題があります。ここで他のstackexchangeユーザーが示しているように、数値が大きすぎない場合は問題を解決できますが、問題は難しくなり(複雑なLaTeXコード)、テキスト内に書き込むと問題が発生する可能性があります(円が大きくなると、LaTeXは行間のスペースを拡大するか、隣接する上下の行に円を重ねる必要があります):項目リストに丸で囲んだ数字だけが必要な場合は、少し簡単です。この柔軟性の欠如は、場合によっては厄介なものになる可能性があります。合理的な解決策は、 tcolorbox パッケージを使用しているようです。試行した後、これをプリアンブルに追加するだけでよいことがわかりました

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

そして「丸で囲んだ」番号が必要な場合は、ドキュメントでコマンド\ ciaoを呼び出します(例:\ ciao {12}は番号12を「丸で囲みます」)。ちなみに、プリアンブル行でfboxを使用することは重要です。これがないと、丸いボックスが行の余白にあるときに、左側または右側の行から突き出る可能性があります。これは非常に美的ではありません。

再開すると、このソリューションには3つの長所と1つの短所があります。

  • pros :シンプルなコード、テキスト内での作業も良好、柔軟性(大きな数字も&境界線や色で簡単に操作できる場合:0.5ptまたは黒を参照&プリアンブル行の白)。
  • cons :「円はありませんが、丸いボックスがありますが、これは妥当な妥協点だと思います。

このメソッドの適用例は

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. 

これにより

ここに画像の説明を入力

数字がはみ出さず、行間のスペースは常に同じであることに注意してください。数字があるかどうかは関係ありません。 つまり、このほぼ丸で囲まれた数字は、テキスト内にある場合でも非常にうまく機能します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です