1 คะแนน โดย GN⁺ 2024-12-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Quiver เป็นโปรแกรมแก้ไขที่ใช้สร้างไดอะแกรมเชิงสลับและไดอะแกรมการวางต่อแบบกราฟิก พร้อมรองรับการเรนเดอร์คุณภาพสูงสำหรับการแสดงผลบนหน้าจอ และการส่งออกเป็น LaTeX·Typst
  • การสร้างและแก้ไขไดอะแกรมทำได้เร็วกว่าการเขียน LaTeX หรือ Typst ด้วยมือมาก และเมื่อคุ้นเคยแล้วก็สามารถทำงานได้เร็วใกล้เคียงกับการใช้ ปากกาและกระดาษ
  • รองรับไดอะแกรมที่ซับซ้อน เช่น pullback, pushout, adjunction และ higher cell พร้อม กริดยืดหยุ่น ที่ปรับตามขนาดของป้ายกำกับ และสไตล์ลูกศรที่นำมาผสมกันได้
  • สามารถทำงานได้ทั้งด้วยการลากเมาส์และคีย์ลัด รองรับการเลือกหลายรายการ, เลิกทำ·ทำซ้ำ, แมโครของผู้ใช้, การส่งออกไดอะแกรมแบบฝังใน HTML, การแพนและซูม
  • เมื่อส่งออกเป็น LaTeX หรือ Typst สามารถแทรกลิงก์ของไดอะแกรมไปด้วย เพื่อกลับมาเปิดแก้ไขภายหลังหรือแชร์ให้ผู้อื่นได้

Quiver ทำอะไรได้บ้าง

  • Quiver เป็นโปรแกรมแก้ไขกราฟิกสมัยใหม่สำหรับสร้าง ไดอะแกรมเชิงสลับ และ ไดอะแกรมการวางต่อ
  • สามารถเรนเดอร์ไดอะแกรมคุณภาพสูงที่ดูดีบนหน้าจอ และส่งออกเป็น LaTeX ผ่าน tikz-cd หรือเป็น Typst ผ่าน fletcher
  • สามารถทดลองใช้งานได้ทันทีบนเว็บที่ q.uiver.app
  • วิธีใช้งานอย่างมีประสิทธิภาพและการสร้างหรือแก้ไขไดอะแกรมด้วยคีย์บอร์ดล้วนสรุปไว้ใน บทสอน Quiver

ความสามารถในการสร้างไดอะแกรม

  • มีอินเทอร์เฟซที่มีประสิทธิภาพและใช้งานเข้าใจง่ายสำหรับการสร้าง ไดอะแกรมเชิงสลับ ที่ซับซ้อนและไดอะแกรมการวางต่อ
  • ตัวอย่างที่รองรับ ได้แก่
    • ไดอะแกรมที่มี pullback และ pushout
    • adjunction
    • higher cell
  • การจัดวางอ็อบเจ็กต์อิงตาม กริดยืดหยุ่น ที่ปรับตามขนาดของป้ายกำกับ
  • ลูกศรสามารถผสมผสานสไตล์ได้หลากหลาย
  • สามารถใช้สีกับป้ายกำกับและลูกศรได้
  • ออกแบบมาให้ดูดีทั้งในภาพหน้าจอ และให้ผลลัพธ์ที่ส่งออกเป็น LaTeX·Typst มีหน้าตาใกล้เคียงกับไดอะแกรมต้นฉบับมากที่สุด

วิธีป้อนข้อมูลและเวิร์กโฟลว์การแก้ไข

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

การส่งออกและการนำกลับมาใช้ใหม่

  • สามารถส่งออกไดอะแกรมเป็น LaTeX หรือ Typst ได้
  • ผลลัพธ์ที่ส่งออกจะมี ลิงก์ สำหรับกลับมายังไดอะแกรมนั้น
    • สามารถเปิดกลับมาแก้ไขภายหลังได้
    • สามารถแชร์ให้ผู้อื่นได้
  • รองรับการส่งออกไดอะแกรมที่ฝังใน HTML ได้ด้วย
  • แมโครที่ผู้ใช้กำหนดเองสามารถใช้งานได้โดยวาง URL ของไฟล์ที่มี \newcommand
  • การเชื่อมต่อกับเอดิเตอร์ดูได้จากเอกสาร Editor integration และ Quiver wiki

เงื่อนไขการบิลด์และการรัน

  • สามารถรัน make บนบรรทัดคำสั่ง แล้วเปิด src/index.html ในเบราว์เซอร์เพื่อตรวจสอบผลลัพธ์ของการบิลด์ได้
  • หากเวอร์ชันของ Make หรือ Bash ไม่ตรงกัน สามารถดาวน์โหลด KaTeX รุ่นล่าสุดด้วยตนเองแล้ววางไว้ใต้ src/KaTeX/
  • หากพาธของ KaTeX ไม่ถูกต้อง จะเกิดข้อผิดพลาดในการโหลด KaTeX
  • Quiver ต้องรันผ่าน localhost
  • หากติดตั้ง Python ไว้แล้ว สามารถรัน make serve ในไดเรกทอรี Quiver แล้วเปิด localhost:8000 ในเบราว์เซอร์ได้
  • หากมีปัญหาในการบิลด์ สามารถเปิด GitHub issue พร้อมรายละเอียดของปัญหาได้

1 ความคิดเห็น

 
GN⁺ 2024-12-28
ความเห็นจาก Hacker News
  • เครื่องมือนี้ยอดเยี่ยมจริง ๆ ผมสร้าง Fourier-Poisson cube [0] ได้ในราว 10 นาที และ UI ก็ใช้งานง่ายมาก
    ผมคิดว่าการออกแบบที่โฟกัสไปที่ commutative diagram แทนที่จะเป็นแคนวาสอิสระนั้นเป็นตัวเลือกที่ยอดเยี่ยม เพราะทำให้ดูเรียบร้อยและใช้งานง่าย ถ้ามีเครื่องมือนี้ตอนเขียน论文 คงประหยัดเวลาไปได้มหาศาล
    [0] https://q.uiver.app/#q=WzAsOCxbMCwxLCJnIFxcdGV4dHsgb24gfVxcb...

    • สำหรับคนที่สนใจเรื่องนี้ หนังสือ A First Course in Fourier Analysis ของ Kammler น่าจะเป็นเอกสารอ้างอิงได้
  • ในบริบทใกล้เคียงกัน ช่วงหลังมานี้ Petri net editor ตัวนี้น่าประทับใจทีเดียว: https://pes.vsb.cz/petrineteditor/#/model
    Petri net นั้นเจ๋งดี ถ้าทำ finite state machine ให้เป็นแบบมัลติเธรด ก็จะให้ความรู้สึกใกล้เคียงแบบนี้
    ผมรู้จัก Petri net ครั้งแรกตอนอ่านบทความขององค์กรชื่อ “statebox” Statebox สนใจ Petri net, commutative diagram และแนวคิดหลายอย่างในทฤษฎีหมวดหมู่ พออ่าน论文สองสามฉบับแล้วก็หลงใหล จนการได้ไปทำงานที่นั่นกลายเป็นความฝัน น่าเสียดายที่ตอนนี้หน้าเว็บมีแค่ข้อความ “imagine being a category theorist” กับอีโมจิหัวเราะจนน้ำตาไหล เลยไม่รู้ว่าเกิดอะไรขึ้น

  • เมื่อไม่กี่วันก่อน ผมใช้ตัวนี้วาดไดอะแกรมง่าย ๆ [0] เพื่อใส่ในหนังสือของผม [1]
    น่าเสียดายที่มันทำมาเฉพาะสำหรับทฤษฎีหมวดหมู่ จึงไม่ค่อยมีการรองรับการตกแต่งโหนดให้สวยงามมากนัก แต่แน่นอนว่าสามารถจัดการด้วย LaTeX ได้
    [0] https://q.uiver.app/#q=WzAsNSxbMSw2LCJcXHRleHR7TmF0dXJhbCBEZ...
    [1] http://abstractionlogic.com

  • เมื่อคืนผมกำลังใช้ https://tikzcd.yichuanshen.de/ อยู่ ซึ่งคล้ายกับเครื่องมือนี้แต่ฟีเจอร์น้อยกว่า ถึงอย่างนั้นก็ยังค่อนข้างดีสำหรับการทำ ไดอะแกรมง่าย ๆ

  • ช่วยอธิบายให้คนเป็นนักพัฒนาซอฟต์แวร์ที่ถ่อมตัวและฝีมือก็ไม่ได้เก่งมากฟังได้ไหมว่าแผนภาพสับเปลี่ยนได้กับแผนภาพปะติดคืออะไร?
    บทความ Wikipedia นามธรรมเกินไปกว่าจะเข้าใจในระดับพื้นฐาน [0]
    [0]: https://en.wikipedia.org/wiki/Commutative_diagram

    • มันก็แค่รูปแบบหนึ่งในการเขียน สมการ ระหว่างฟังก์ชัน หรือสิ่งอื่น ๆ ที่ประกอบกันได้เหมือนฟังก์ชัน ให้อ่านง่าย
      ถ้ามี f อยู่บน A → B ก็หมายถึงฟังก์ชัน f ที่รับอินพุตจาก A แล้วสร้างเอาต์พุตใน B
      แผนภาพที่ A → B เป็น f แล้วจากนั้น B → C เป็น g และ A → C เป็น h หมายถึง g ∘ f = h หรือก็คือทำ f แล้วทำ g ให้ผลเหมือนกับทำ h การเขียนโดเมนและโคโดเมนของแต่ละฟังก์ชันไว้ด้วยทำให้ดูได้ง่ายว่าฟังก์ชันเหล่านั้นประกอบกันได้หรือไม่ กล่าวคือผ่านการตรวจชนิดหรือเปล่า
      เนื่องจากเส้นทางในแผนภาพเองก็ประกอบกันได้เหมือนฟังก์ชัน สัญกรณ์นี้จึงเข้ากันได้อย่างเป็นธรรมชาติมาก ตัวอย่างเช่น กฎการเปลี่ยนหมู่ถูกฝังอยู่ในสัญกรณ์เอง ดังนั้น A→B→C→D จึงเป็นการแสดงออกเพียงแบบเดียวของการประกอบฟังก์ชันสามตัว และไม่สามารถเขียนความแตกต่างระหว่าง (f∘g)∘h กับ f∘(g∘h) ได้เลย
    • แผนภาพสับเปลี่ยนได้ คือชุดของเส้นเชื่อมแบบมีทิศทางระหว่างโหนดกับโหนด หรือก็คือกราฟมีทิศทาง แต่ยังรวมข้ออ้างว่าทุก ๆ สองเส้นทางที่เริ่มจากโหนดเดียวกันและจบที่โหนดเดียวกันนั้นเทียบเท่ากันในความหมายบางอย่าง
      โดยทั่วไป หากมีกราฟหลายเส้นเชื่อมแบบมีทิศทาง พร้อมคำอธิบายว่าเส้นทางใดบ้างในนั้นเทียบเท่ากันหรือไม่เทียบเท่ากัน และความสัมพันธ์เทียบเท่านี้มีสมบัติพื้นฐานบางอย่าง ก็จะเรียกสิ่งนั้นว่า หมวดหมู่ แนวคิดนี้พบได้บ่อยมากในคณิตศาสตร์ ตรรกะเชิงนามธรรม ฯลฯ แผนภาพสับเปลี่ยนได้มีประโยชน์ในบริบทนี้สำหรับอนุมานความเทียบเท่าของเส้นทางได้อย่างรวดเร็วด้วยภาพ
    • ตัวพิมพ์ใหญ่แต่ละตัวคือชนิด และตัวพิมพ์เล็กแต่ละตัวคือฟังก์ชันจากชนิดหนึ่งไปยังอีกชนิดหนึ่ง เมื่อตามเส้นทางในแผนภาพ ก็สามารถพูดถึงการเรียกฟังก์ชันหลายครั้งได้ เช่น ตาม f แล้วตาม g แล้วตาม n จะหมายถึง n(g(f(a))) นี่คือแผนภาพ และการบอกว่าแผนภาพสับเปลี่ยนได้หมายถึง ถ้าตามเส้นทางสองเส้นทางใด ๆ ที่มีจุดเริ่มต้นและจุดสิ้นสุดเดียวกัน ผลจะเท่ากัน
      ดังนั้น n(g(f(•))), s(r(l(•))), s(m(f(•))) ล้วนเป็นทั้งเส้นทางและการเรียกฟังก์ชันจาก A ไปยัง C' และเมื่อบอกว่าแผนภาพสับเปลี่ยนได้ เส้นทางเหล่านี้จึงเท่ากันทั้งหมด
      มอร์ฟิซึมเชิงฉีด, มอร์ฟิซึมเชิงทั่วถึง, มอร์ฟิซึมสมสัณฐาน ล้วนเป็นสมบัติสำคัญของฟังก์ชัน ซึ่งทำให้สามารถ “ตัดทอน” พจน์บางตัวจากทั้งสองข้างของสมการได้ เช่น โดยทั่วไปจาก f(g(x))=f(h(x)) ไม่อาจสรุปได้ว่า g(x)=h(x) ถ้าสามารถตัดทอน f ได้ในลักษณะนี้ ก็เรียกว่าเป็นมอร์ฟิซึมเชิงฉีด ในทำนองเดียวกัน ถ้าจาก g(f(x))=h(f(x)) สามารถตัดทอน f แล้วได้ g(x)=h(x) ก็แปลว่า f เป็นมอร์ฟิซึมเชิงทั่วถึง มอร์ฟิซึมสมสัณฐานมีสมบัติทั้งสองอย่าง ด้วยสมบัติเหล่านี้ ในบางสถานการณ์จึงสามารถ “เดินย้อนกลับ” บางเส้นทางในแผนภาพได้
      รูปแบบหนึ่งของทฤษฎีบทที่พบได้ในทฤษฎีหมวดหมู่คือ ตัวอย่างอย่าง five lemma[0] ที่ว่า “ดูแผนภาพนี้ ถ้า g เป็นมอร์ฟิซึมเชิงทั่วถึง และ h เป็นมอร์ฟิซึมเชิงฉีด แล้ว f เป็นมอร์ฟิซึมสมสัณฐาน” กล่าวคือ เมื่อรู้ว่าสามารถตัดทอนได้จากฝั่งนี้และฝั่งนั้น ก็จะรู้ได้ว่าสามารถตัดทอนได้จากอีกฝั่งหนึ่งด้วย
      [0] https://en.wikipedia.org/wiki/Five_lemma

      five lemma บอกว่า หากแถวเป็นลำดับแม่นตรง, m และ p เป็นมอร์ฟิซึมสมสัณฐาน, l เป็นมอร์ฟิซึมเชิงทั่วถึง และ q เป็นมอร์ฟิซึมเชิงฉีด แล้ว n ก็เป็นมอร์ฟิซึมสมสัณฐานด้วย

    • เป็นวิธีแสดงว่าเส้นทางสองเส้นผ่านแผนภาพนั้นเท่ากันในความหมายบางอย่าง จุดที่มุมคือวัตถุ และลูกศรคือ มอร์ฟิซึม
      ถ้าคิดแบบง่าย ๆ ให้มองว่าวัตถุคือชนิด และลูกศรคือฟังก์ชันระหว่างชนิด
      เริ่มจากมุมซ้ายบนแล้วเดินไปตามสองเส้นทางพร้อมตรวจชนิด ถ้าแผนภาพตรวจชนิดได้ถูกต้อง ก็เรียกว่าสับเปลี่ยนได้ และสองเส้นทางนั้นเทียบเท่ากันในความหมายบางอย่าง ความหมายที่เป็นรูปธรรมนั้นขึ้นอยู่กับรายละเอียดหลายอย่างที่ละไว้ที่นี่
    • การอ่านนิยามของ หมวดหมู่ น่าจะช่วยได้ แม้มันจะนามธรรมมาก แต่มีแค่สัจพจน์ไม่กี่ข้อ จึงค่อนข้างเรียบง่าย
      ตัวอย่างของหมวดหมู่มีหมวดหมู่ “เซตและฟังก์ชัน” ในหมวดหมู่นั้น เซตทุกเซตที่คิดได้เป็นวัตถุ หรือก็คือโหนด และฟังก์ชันทุกฟังก์ชันที่คิดได้ระหว่างเซตสองเซตใด ๆ เป็นลูกศรระหว่างทั้งสอง
      ดังนั้นถ้านำลูกศรหนึ่งเส้นจาก A ไป B และอีกเส้นจาก B ไป C มาประกอบกันเหมือนฟังก์ชัน ก็จะได้ฟังก์ชันจาก A ไป C
      แผนภาพสับเปลี่ยนได้มองได้ว่าเป็นสับเซตของหมวดหมู่ทั้งหมด และเป็นกรณีที่เมื่อตามทุกเส้นทางที่วาดไว้ระหว่างเซตสองเซต X และ Y แล้วประกอบลูกศรของแต่ละเส้นทาง จะได้ฟังก์ชันเดียวกัน
      ผมไม่เคยอ่านเรื่องหมวดหมู่ระดับสูง จึงไม่แน่ใจเรื่องแผนภาพปะติด แต่ก็น่าจะเป็นการทำให้แนวคิดลักษณะนี้เป็นทั่วไปในรูปแบบใดรูปแบบหนึ่ง
  • ส่งออกเป็นรูปแบบที่เป็นมิตรกับเว็บได้ไหม? น่าจะเป็น SVG แหละ ถ้ารัน quiver บน localhost การแชร์เป็นลิงก์ก็ไม่ใช่ตัวเลือก

  • ตอนเรียนวิชาทฤษฎีหมวดหมู่เมื่อหลายปีก่อน Quiver เป็นสิ่งที่ขาดไม่ได้จริง ๆ UI สะอาด ใช้ง่ายตามสัญชาตญาณ และฟีเจอร์ก็เพียงพอ เทียบกับการต้องปล้ำกับ TikZ แล้วสู้กันไม่ได้เลย

  • เป็นผลิตภัณฑ์ที่ดีมาก เมื่อก่อนปกติผมเขียน โค้ด TikZ ด้วยมือ และก็ทำได้ค่อนข้างเร็ว แต่ตอนนี้ลืมไปเยอะแล้ว จึงคิดว่าสิ่งนี้จะมีประโยชน์มากสำหรับแผนภาพสับเปลี่ยนได้

  • ในนี้มี เครื่องมือสร้างโค้ด ที่น่าทำซ่อนอยู่

  • เคยใช้ Quiver หลายครั้ง และทุกครั้งก็เป็นประสบการณ์ที่ดี คนทำยอดเยี่ยมมาก