วิธีกำหนดค่าคาถาเพื่อละเว้นสภาพแวดล้อมบางอย่างใน LaTeX


10

มีวิธีที่จะบอกเป็นกลุ่มไม่ให้ตรวจสอบการสะกดคำของเอกสารลาเท็กซ์หรือไม่? ตัวอย่างเช่นการบล็อกรหัสโดยใช้mintedสภาพแวดล้อมหรือ URL ใน\url{}?

(ฉันไม่แน่ใจว่ามันเกี่ยวข้องกับการตรวจสอบการสะกด แต่ฉันใช้ปลั๊กอินvimtexเพื่อแก้ไขไฟล์ลาเท็กซ์)


1
ดู (ยัง) สิ่งนี้: vi.stackexchange.com/a/4003/1800
VanLaser

@Gregoire ยังกล่าวถึงคำถามนี้ในvimtex / ปัญหา / # 219
Karl Yngve Lervåg

คำตอบ:


10

@NoSpellคุณสามารถปิดการตรวจสอบการสะกดไวยากรณ์สำหรับรายการด้วยการเพิ่มกลุ่มร่วมกับ คุณสามารถอ่าน:help spell-syntaxข้อมูลและดูไฟล์ไวยากรณ์ของ tex ซึ่งน่าจะมีตัวอย่างอยู่แล้ว หากคุณพิมพ์:tabe $VIMRUNTIME/syntax/tex.vimคุณควรได้รับไฟล์ไวยากรณ์ tex ในแท็บใหม่ หากคุณค้นหา/\c@NoSpellคุณอาจเห็นบรรทัดเหมือนกัน

 syn cluster texMathZoneGroup add=@NoSpell

texMathZoneGroupคลัสเตอร์ได้ถูกกำหนดไว้ก่อนหน้านี้ในสคริปต์เพื่อให้มีจำนวนของรายการไวยากรณ์และที่นี่@NoSpellจะถูกเพิ่มในกลุ่มที่จะตรวจสอบการสะกดปิดการใช้งานสำหรับรายการเหล่านี้ ฉันเกรงว่าฉันไม่สามารถบอกได้ว่าจะเปลี่ยนแปลงรายการไวยากรณ์ของคุณได้ดีที่สุดเพราะฉันไม่รู้ไฟล์ไวยากรณ์ที่ดีมาก อาจมีคลัสเตอร์ที่ชัดเจนอยู่แล้วซึ่งคุณสามารถเพิ่มได้อย่างง่ายดาย@NoSpellหรือคุณอาจต้องสร้างคลัสเตอร์ที่contains=รายการที่เป็นปัญหา คุณควรสร้างสำเนาของไฟล์ไวยากรณ์ในไดเรกทอรีรันไทม์ของผู้ใช้และใช้การเปลี่ยนแปลงที่นั่นแทนที่จะเปลี่ยนไฟล์ไวยากรณ์แบบกระจายหรือเพื่อใช้การเปลี่ยนแปลงในafter/syntax/tex.vimหรือสคริปต์อื่นที่รันหลังจากโหลดไฟล์ไวยากรณ์ .

เนื่องจากคุณใช้ปลั๊กอินอาจมีตัวเลือกที่เกี่ยวข้องกับรายการที่ตรวจสอบการสะกด ฉันไม่ได้ใช้vimtexแต่ Karl Lervågค่อนข้างกระตือรือร้นที่นี่และหากคุณได้รับความสนใจเขาสามารถตอบคำถามนั้นให้คุณได้


ไม่มีตัวเลือกดังกล่าวในvimtexวันนี้ไม่มี แต่ดูเหมือนว่าเหมาะสมที่จะไม่ใช้การสะกดคำในสภาพแวดล้อมที่ไม่ได้ใช้งานดังนั้นฉันอาจอัปเดตปลั๊กอินตามลำดับ ขอบคุณสำหรับคำอธิบายที่ดี!
Karl Yngve Lervåg

ฉันมองไปรอบ ๆ ในรหัสและฉันไม่พบภูมิภาคที่มีอยู่สำหรับสภาพแวดล้อมที่มิ้นต์ดังนั้นฉันจึงพยายามสร้างของตัวเองแบบนี้: syn region mintedZone start="\\begin{minted}" end="\\end{minted}" contains=@NoSpellแต่ดูเหมือนจะไม่ช่วย ข้อเสนอแนะใด ๆ
Grégoire

@ Grégoireกรุณาแจ้งให้เรายังคงอภิปรายในประเด็น vimtex
Karl Yngve Lervåg

5

~/.vim/after/syntax/tex.vimคุณสามารถเพิ่มกฎไวยากรณ์ของคุณเองเพื่อเช่น เพื่อป้องกันการตรวจสอบการสะกดคำภายในคำสั่งเช่น\urlคุณสามารถใช้รหัสต่อไปนี้:

syntax match texStatement '\\command' nextgroup=texMyCommand
syntax region texMyCommand matchgroup=Delimiter start='{' end='}' contained contains=@NoSpell

ที่นี่texStatementและเป็นกลุ่มที่มีการกำหนดโดยปลั๊กอินไวยากรณ์ภายในให้ดูDelimiter:e $VIMRUNTIME/syntax/tex.vim

หากคุณต้องการเข้าใจคำสั่งข้างต้นฉันสามารถแนะนำส่วนช่วยเหลือต่อไปนี้:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.