Arbitrary order xparse e type arguments (embellishments)?

Sep 05 2020

ฉันสามารถใช้อาร์กิวเมนต์ e-type xparse เพื่อกำหนดวิธีการที่ตัวห้อยและตัวยกทำงานสำหรับคำสั่ง (เช่น make \ mybeta ใส่ sub / super scripts ทั้งหมดใน parens) ได้หรือไม่ ฉันพยายามกำหนด

 \NewDocumentCommand{\mybeta}{e_e^}{\beta_{(#1)}^{(#2)}}

และดูเหมือนว่าจะทำงานได้ดีถ้าฉันวางตามลำดับอาร์กิวเมนต์ที่ระบุไว้ แต่ไม่ใช่เมื่อฉันลอง

 \mybeta^{n}_{s}

ที่ฉันได้รับคำเตือนตัวห้อยสองครั้งเมื่อฉันต้องการ $\beta^{(n)}_{(s)}$

ฉันเดาว่าบางทีฉันอาจต้องใช้ e {_ ^} เป็นข้อกำหนดของอาร์กิวเมนต์ แต่ถ้าฉันทำเช่นนั้นฉันจะแยกอาร์กิวเมนต์ _ และ ^ ออกจากกันหรือกู้คืนได้อย่างไร หรือมีวิธีที่แตกต่าง / ดีกว่าที่ฉันควรทำเกี่ยวกับเรื่องนี้และฉันเข้าใจผิดเกี่ยวกับการปรุงแต่งทั้งหมดหรือไม่?

คำตอบ

3 LaTeXereXeTaL Sep 05 2020 at 08:44

วิธีแก้ปัญหาคือตามที่คุณคาดการณ์ไว้เพื่อใช้e{_^}ในข้อกำหนดอาร์กิวเมนต์ของคุณ ลำดับของการปรุงแต่งไม่สำคัญ และใช่มันน่าทึ่งมากที่ได้ผล!

PeterGerdes Sep 05 2020 at 08:43

เห็นได้ชัดว่า (ขอบคุณ @LateXeraXeTal) ที่คุณเพิ่งใช้

 \NewDocumentCommand{\mybeta}{e{_^}}{\beta_{(#1)}^{(#2)}}

ฉันยอมรับว่าฉันสับสนเล็กน้อยว่าทำไมคุณไม่ใช้ตัวระบุประเภทอาร์กิวเมนต์ e หลายตัวเพื่อทำสิ่งนี้ เราจะเคยใช้อาร์กิวเมนต์ e หลายประเภทหรือไม่?