Tikz ในตัวห้อยหรือเลขชี้กำลัง

Aug 19 2020

บางครั้งฉันใช้ tikz เพื่อวาดสัญลักษณ์พิเศษที่ใช้ในสมการ ฉันไม่รู้ว่ามีวิธีที่ดีกว่านี้ไหม แต่มันง่ายมากและให้ผลลัพธ์ที่ดี เพื่อเป็นตัวอย่างที่เป็นรูปธรรม:

\newcommand{\symb}{\tikz[baseline=(s.base)]{
        \node[inner sep=1pt,outer sep=0pt] (s) {$s$};
        \draw[-] (s.north east) -- (s.south east) -- (s.south west) -- (s.north west);
    }}

เพื่อให้ได้รูปแบบคณิตศาสตร์ที่มีสามด้านของกล่องล้อมรอบ ทำงานได้ดีในเกือบทุกสถานการณ์โดยมีข้อยกเว้นอย่างหนึ่ง: ไม่สามารถปรับขนาดได้อย่างเหมาะสมเมื่อใช้เป็นตัวห้อยหรือเลขชี้กำลัง

ในทั้งสองมีขนาดเท่ากันแม้ว่าจะปรากฏในชื่อเรื่องหรือมีขนาดตัวอักษรต่างกันเช่นทั้งสองยังคงมีขนาดเท่ากันทุกประการ แต่เมื่อมีสคริปต์เข้ามาเกี่ยวข้องเช่นในครั้งที่สอง$s$ vs $\symb${\Large $s$ vs $\symb$}$X_s$ vs $X_\symb$$s$ ไม่อยู่ในขนาดสคริปต์

มีวิธีแก้ไขคำสั่งหรือไม่ $\symb$ ด้านบนดังนั้นเมื่อใช้ภายในตัวห้อยหรือเลขชี้กำลังจะได้รับการปรับขนาดในลักษณะเดียวกับข้อความ?

ฉันพบวิธีแก้ปัญหาที่ใช้งานได้แล้ว: สร้างคำสั่งเวอร์ชันที่สองเพื่อใช้เมื่ออยู่ในสไตล์สคริปต์:

\newcommand{\symbsc}{\tikz[baseline=(s.base)]{
        \node[inner sep=1pt,outer sep=0pt] (s) {$\scriptstyle s$};
        \draw[-] (s.north east) -- (s.south east) -- (s.south west) -- (s.north west);
    }}

ซึ่งให้ผลลัพธ์ตามที่ต้องการ แต่ฉันคิดว่ามันน่ารำคาญเล็กน้อยที่มีสองฟังก์ชันที่แตกต่างกันขึ้นอยู่กับว่าฉันอยู่ในสไตล์สคริปต์หรือไม่ ฉันกำลังกระโดดใครบางคนสามารถแนะนำวิธีที่ดีกว่านี้ให้ฉันได้ไหม

ตัวอย่างน้อยที่สุด:

\documentclass{article}
\usepackage{tikz}

\newcommand{\symb}{\tikz[baseline=(s.base)]{
        \node[inner sep=1pt,outer sep=0pt] (s) {$s$};
        \draw[-] (s.north east) -- (s.south east) -- (s.south west) -- (s.north west);
    }}

\begin{document}

In normale size: $\symb$ vs $s$.

In large scale, it scales well: {\Large $\symb$ vs $s$ }

But in subscript, it doesn't: $X_{\symb}$ vs $X_{s}$

It especially look bad if both appear in the same subscrit:

$X_{s \symb}$ vs $s \symb$

\end{document}

คำตอบ

2 muzimuzhiZ Aug 19 2020 at 22:17

การห่อ\tikzสิ่งของทั้งหมดไว้ข้างใน\text{...}โดยamsmathบรรจุภัณฑ์จะได้ผล สังเกตว่า\textจะเหมือนกับ\mboxว่าใช้ในโหมดข้อความซึ่งไม่เป็นอันตรายในกรณีนี้

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}

\makeatletter
\newcommand{\symb}{%
  \text{%
    \tikz[baseline=(s.base)] {
      \node[inner sep=1pt, outer sep=0pt] (s) {$s$};
      \draw (s.north east) -- (s.south east) -- (s.south west) -- (s.north west);
    }%
  }%
}
\makeatother

\begin{document}

In normale size: $\symb$ vs $s$.

In large scale, it scales well: {\Large $\symb$ vs $s$ }

But in subscript, it doesn't: $X_{\symb}$ vs $X_{s}$

It especially look bad if both appear in the same subscrit:

$X_{s \symb}$ vs $s \symb$

\end{document}