Sioyek โปรแกรมดู PDF ที่ออกแบบมาเฉพาะสำหรับตำราเรียนและบทความวิจัย
(github.com/ahrm)- Sioyek เป็นโปรแกรมดู PDF ที่เน้นการอ่านตำราเรียนและบทความวิจัย โดยมีฟีเจอร์สำหรับค้นหาไฟล์ที่เคยเปิดอย่างรวดเร็ว และนำทางภายในโครงสร้างของบทความ
- แม้ใน PDF ที่ไม่มีลิงก์ ก็สามารถกระโดดไปยัง รูปภาพและรายการอ้างอิง ได้ และรองรับการค้นหาชื่อรายการอ้างอิงใน Google Scholar หรือ Libgen
- จัดวางฟีเจอร์โดยเน้น การนำทาง ที่จำเป็นต่อการอ่านเอกสารยาว เช่น ค้นหาสารบัญ, ภาพรวมแบบเร็ว, mark, bookmark และค้นหา highlight
- ผู้ใช้หลายจอสามารถใช้ Portals เพื่อเชื่อมตำแหน่งเนื้อหากับตำแหน่งรูปภาพ และดูปลายทาง portal ที่ใกล้ที่สุดโดยอัตโนมัติในหน้าต่างแยกได้
- มีไฟล์ติดตั้งทางการสำหรับ Windows, macOS และ Linux รวมถึง Homebrew Cask และแพ็กเกจจากบุคคลที่สามสำหรับ Linux distribution หลายตัว โดยการ build จาก development branch ต้องใช้ Qt 6.7 หรือ 6.8
ภาพรวมโปรเจกต์
- Sioyek เป็นโปรแกรมดู PDF ที่มุ่งเน้นตำราเรียนและบทความวิจัย
- เอกสารทางการมีให้ที่ Sioyek documentation
- มีวิดีโอแนะนำฟีเจอร์และวิดีโอ tutorial ที่ละเอียดกว่า
ช่องทางการติดตั้ง
- ไฟล์ติดตั้งทางการสำหรับ Windows, macOS และ Linux มีให้ที่ Releases page
- บน macOS สามารถติดตั้งผ่าน Homebrew Cask ได้
brew install --cask sioyek
- มีแพ็กเกจจากบุคคลที่สามสำหรับ Linux ด้วย แต่เนื่องจากจัดทำโดยผู้แพ็กเกจภายนอก ผู้ใช้ต้องยอมรับความเสี่ยงเอง
ฟีเจอร์นำทางเอกสาร
- Quick Open ช่วยให้ค้นหาและเปิดไฟล์ที่เคยโต้ตอบด้วยใน Sioyek ได้อย่างรวดเร็ว
- ฟีเจอร์ Table of Contents ช่วยให้ค้นหารายการในสารบัญและย้ายไปยังตำแหน่งนั้นได้
- Smart Jump ช่วยให้ย้ายไปยังรูปภาพที่ถูกอ้างถึงหรือรายการอ้างอิงได้ แม้ไฟล์ PDF จะไม่มีลิงก์ให้ก็ตาม
- สามารถคลิกปุ่มกลางหรือ Shift+คลิกปุ่มกลางที่ชื่อรายการอ้างอิง เพื่อค้นหาใน Google Scholar หรือ Libgen ได้
- Overview ช่วยให้คลิกขวาที่รูปภาพ รายการอ้างอิง ตาราง ฯลฯ เพื่อเปิดเป็นภาพรวมแบบเร็วได้
- ทำงานได้แม้เอกสารจะไม่มีลิงก์ให้ เช่นเดียวกับ Smart Jump
ฟีเจอร์ช่วยอ่านเอกสารยาว
- Mark ช่วยบันทึกตำแหน่งที่มีชื่อใน PDF และกลับไปยังตำแหน่งนั้นด้วยชื่อนั้นได้อย่างรวดเร็วในภายหลัง
- แต่ละ mark มีชื่อเป็นอักขระเดี่ยว เช่น
aหรือm - mark ตัวพิมพ์เล็กเป็นแบบเฉพาะเอกสาร ส่วน mark ตัวพิมพ์ใหญ่เป็นแบบ global
- เป็นวิธีที่ผู้เคยใช้ Vim จะคุ้นเคย
- แต่ละ mark มีชื่อเป็นอักขระเดี่ยว เช่น
- Bookmarks คล้ายกับ mark แต่ใช้ชื่อเป็นสตริงข้อความ และทั้งหมดเป็นแบบ global
- Highlights ช่วยทำเครื่องหมายข้อความด้วย highlight หลายประเภท และทำให้ค้นหา highlight ทั้งหมดได้
- Portals ช่วยเชื่อมโยงย่อหน้าปัจจุบันกับตำแหน่งที่อยู่ไกลออกไป เช่น รูปภาพ
- แสดงปลายทาง portal ที่ใกล้ที่สุดในหน้าต่างแยก
- โดยทั่วไปหน้าต่างนี้จะถูกวางไว้บนจอที่สอง
- เมื่อผู้ใช้นำทางเอกสาร หน้าต่างจะอัปเดตไปยังปลายทาง portal ที่ใกล้ที่สุดโดยอัตโนมัติ
การตั้งค่าและการ build
- Configuration ช่วยให้ปรับแต่ง key binding ทั้งหมดและองค์ประกอบ UI บางส่วนได้ด้วยการแก้ไข
keys_user.configและprefs_user.config- การตั้งค่าเริ่มต้นอยู่ใน
keys.configและprefs.config
- การตั้งค่าเริ่มต้นอยู่ใน
- หากเกิดข้อผิดพลาดในการ build ด้วย Qt 5.* เมื่อ build development branch ต้องใช้ Qt 6.7 หรือ 6.8
- หากบน macOS มีข้อความ
"sioyek is damaged and cannot be opened. It is recommended to eject the image."แสดงว่าเป็นปัญหาเกี่ยวกับ macOS quarantine และมีการชี้ไปยังการพูดคุยที่เกี่ยวข้อง - การ build บน Linux มีคำสั่งสำหรับ Fedora และขั้นตอนสำหรับ distribution ทั่วไป
- มีขั้นตอนที่ทดสอบบน Fedora Workstation 36 รวมอยู่ด้วย
- ขั้นตอนสำหรับ distribution ทั่วไปแนะนำให้ติดตั้ง Qt 5,
qmake,libharfbuzzแล้วรัน./build_linux.sh
- การ build บน Windows ทดสอบกับ Visual Studio 2019 แล้ว และเวอร์ชันที่ค่อนข้างใหม่ก็น่าจะทำงานได้เช่นกัน
- หลังเตรียม Qt 5 และ
qmakeแล้ว ให้รันbuild_windows.batใน 64-bit Visual Studio Developer Command Prompt
- หลังเตรียม Qt 5 และ
- การ build บน Mac แนะนำขั้นตอนติดตั้ง Xcode และ Qt6 แล้วรัน
build_mac.shจากนั้นย้ายsioyek.appที่ build แล้วไปยัง/Applications/และทำ codesign
1 ความคิดเห็น
ความเห็นจาก Hacker News
ชอบมากจนติดตั้งก่อนจะอ่านรายการฟีเจอร์จบด้วยซ้ำ แต่ดูเหมือนยังต้องปรับปรุงบางอย่าง เช่น การแสดงผล 2 หน้า
อินเทอร์เฟซควบคุมด้วยคีย์บอร์ดทำได้ยอดเยี่ยม แต่น่าเสียดายที่ไม่มีคำสั่งเมนู และก็ดูแปลกที่ไม่มีวิธีเปิดหน้าช่วยเหลือขึ้นมาอีกครั้งภายในโปรแกรม ตอนเปิดครั้งแรกจะเห็นหน้าช่วยเหลือ แต่พอเปิดไฟล์แล้วมันหายไป สุดท้ายเลยต้องไปที่หน้าเอกสารบนเว็บไซต์
ถึงอย่างนั้น ฟีเจอร์ดี ๆ ที่ปรับมาเพื่อการวิจัยก็มีมากพอจนยอมทนกับความไม่สะดวกเหล่านี้ได้
:เพื่อเปิด command palette แล้วค้นหาคำสั่งกับคีย์ลัดได้ได้ทำงานในแนวทางที่ผสานเนื้อหาที่อ่านเข้ากับโน้ตของตัวเองให้ดีขึ้น พยายามรวบรวมตำแหน่งในวรรณกรรมที่ไอเดียบางอย่างถูกพัฒนาต่อหรือถูกโต้แย้ง รวมถึงเก็บไอเดียดี ๆ ไว้ด้วย
Cahier(https://getcahier.com) ที่ผมกำลังพัฒนาอยู่ สามารถสร้างการ์ดที่อ้างอิงข้อความเฉพาะใน PDF ที่อ่านได้
น่าสนใจที่ได้เห็นความก้าวหน้าในด้านนี้ตลอดช่วงไม่กี่ปีที่ผ่านมา
สุดท้ายก็เกิดไซโลหลายอัน เช่น บทความวิจัยอยู่ใน Zotero ส่วนโน้ตอยู่ใน Obsidian แยกกัน Cahier มองการจัดการความรู้เป็น เวิร์กโฟลว์แบบบูรณาการ ตั้งแต่การอ่าน การจดโน้ต การจัดระเบียบโน้ต การสร้างอินไซต์ใหม่ ไปจนถึงการเขียน ซึ่งดูเป็นทิศทางที่ถูกต้องอย่างชัดเจน
แต่ก็กังวลว่าอาจต้องสร้างของที่มีอยู่แล้วขึ้นมาใหม่ในบางส่วน เช่น อยากรู้ว่ามีแผนจะรวมฟีเจอร์อย่างตัวเก็บข้อมูลจากเว็บของ Zotero เข้าไปทั้งหมดหรือไม่ นั่นน่าจะเป็นงานมหาศาล แต่ถ้าไม่มี ก็ยากที่จะทดแทน Zotero ได้อย่างสมบูรณ์ในฐานะโซลูชันจัดการบรรณานุกรม อยากรู้ roadmap ขอบเขตฟีเจอร์สุดท้าย และเวิร์กโฟลว์ของผู้ใช้
โดยปกติจะอ่านและใส่ annotation ในบทความบน iPad และชอบที่ไฮไลต์กับโน้ตซิงก์กัน ทำให้อ้างอิงได้ทันทีตอนเขียนบน MacBook หรือเดสก์ท็อป Windows
แต่ในแง่โซลูชันการจดโน้ต Cahier ดูดีกว่ามาก บางครั้งก็คิดว่าคงดีถ้าสามารถรวมซอฟต์แวร์หลายตัวเข้าด้วยกันเพื่อสร้างเครื่องมือที่เหมาะกับแต่ละคนจริง ๆ ได้
ผ่านมาหลายปีแล้วตั้งแต่เคยดูอย่างจริงจังเพื่อใช้ส่วนตัว แต่ตอนนั้นค่อนข้างผิดหวังกับตัวเลือกที่มีอยู่ สำหรับการอ่านหรือจัดระเบียบ PDF นั้น Zotero กับ org-noter ถือว่าอยู่ในกลุ่มที่ดีที่สุดด้วยวิธีที่ต่างกันอย่างสิ้นเชิง
เคยใช้ OneNote อยู่ 1 ปี และตอนนั้นก็ชอบ แต่เพราะมันไม่ช่วยด้านการค้นหา การค้นพบ และการทบทวนข้อมูล จึงทนใช้สำหรับ การสร้างฐานความรู้ หรือการทบทวนวรรณกรรมได้ยาก
ผมคิดว่าซอฟต์แวร์สำหรับอ่านและเชื่อมโยงข้อมูลเอกสาร ไม่ว่าจะเป็น PDF, HTML, วิดีโอ หรือรูปแบบใดก็ตาม ยังสามารถดีขึ้นได้มากกว่าที่เราใช้กันทุกวันนี้
ไม่อย่างนั้นงานที่ทำวันนี้ก็จะหายไป อยากรู้ว่าจะเป็นอย่างไรถ้าวันหนึ่งหยุดพัฒนา Cahier หรือถ้าผมต้องย้ายไปใช้ระบบอื่น
ใช้แอปนี้ตลอด เป็นแอปที่ดี ฟีเจอร์บางอย่างอย่างการกระโดดไปยัง citation ก็มีในส่วนขยาย Google Scholar สำหรับ Chrome แต่แนวคิดที่ทำให้ควบคุมแอปได้เหมือน Vim นั้นดีจริง ๆ
ก่อนใช้ Sioyek เคยใช้ Karabiner ตั้งค่า
j/kฯลฯ ใน macOS Preview เพื่อเลื่อนด้วยปุ่มแบบ Vim แต่ขั้นตอนยุ่งยาก และไม่มีฟีเจอร์มากมายที่ Sioyek มี อีกอย่างคือใช้สีพื้นหลัง PDF แบบ solarized เพื่อลดอาการล้าตา และแอปนี้ก็รองรับ โหมดกลางคืน แม้แต่กับกราฟใน PDFก็มีข้อไม่พอใจอยู่บ้าง มีส่วนขยายสำหรับดู PDF แบบสองคอลัมน์วางข้างกัน แต่มันแก้ไขไฟล์ PDF จริง ๆ ไปเลย การติดตั้งปลั๊กอินโดยรวมทำได้ยาก เคยหาวิธี workaround แล้วรายงานไป แต่ไม่รู้ว่าถูกนำไปปรับปรุงในแอปหรือไม่ ไฟล์ตั้งค่าดูเหมือนจะถูกเก็บไว้ในไดเรกทอรี Applications ของแอป ถ้าอยู่ใน
~/.configจะดีกว่า ฟีเจอร์เปิดไฟล์จากไดเรกทอรีอย่างรวดเร็วใช้ไม่ได้กับคลาวด์ไดรฟ์รวมถึง iCloudฝั่งปลั๊กอิน ใน branch พัฒนาได้รองรับส่วนขยาย JavaScript แบบเนทีฟแล้ว เพราะใช้ JavaScript engine ภายในของ Qt จึงไม่มี dependency ภายนอกและน่าจะจัดการง่ายขึ้นมาก
ส่วนไฟล์ตั้งค่า ผมคิดว่าใน branch พัฒนาสามารถใช้
~/.configได้แล้ว แต่ก็ไม่มั่นใจ 100%จำชื่อ
sioyekไม่ได้จริง ๆ เลยทำ alias ไว้เป็นxpdfได้ลองแนวทางที่ ร่วมมือกันมากขึ้น สำหรับการอ่านและอภิปรายงานวิจัย ที่ https://www.scholars.io หรือ https://app.scholars.io ให้ผู้คนใส่ annotation แสดงความคิดเห็น และร่วมมือกันบนงานวิจัยได้
สงสัยว่า ฟีเจอร์สารบัญ จะทำงานได้ไหมแม้ PDF จะไม่ได้มีสารบัญแนบมา เป็นฟีเจอร์ที่อยากให้ PDF reader ทำให้ได้มาตลอด
สำหรับเปเปอร์มักทำงานได้ค่อนข้างดี มีบ้างที่พลาดบางเซกชันหรือมีรายการจิปาถะปนเข้ามา ส่วนตำราเรียน โดยเฉพาะหนังสือที่มีการจัดวางสูตรคณิตศาสตร์เยอะ ๆ มักมีรายการที่ใช้ไม่ได้หรือรายการตกหล่นมากเกินไป
ถ้าต้องใช้แค่บางส่วนของเปเปอร์หรือตำรา สารบัญที่สร้างอัตโนมัติกับบุ๊กมาร์กก็มักพอแล้ว นอกเหนือจากนั้น ผมชอบใช้ pdf.tocgen(https://github.com/Krasjet/pdf.tocgen) เพื่อสร้างสารบัญที่แม่นยำแบบกึ่งแมนนวลมากกว่า
ถ้าไฟล์ไม่มีสารบัญและเปิดการตั้งค่าไว้ จะสร้างสารบัญด้วยวิธี heuristic สามารถใช้
max_created_toc_sizeเพื่อป้องกันไม่ให้สร้างสารบัญที่ใหญ่เกินไปได้https://sioyek-documentation.readthedocs.io/en/latest/config...
คิดว่าควรลิงก์ไปที่เว็บไซต์มากกว่า
วิธีเลี่ยงแบบง่าย ๆ สำหรับฟีเจอร์ สลับไปมาระหว่างสองหน้า ซึ่งทำได้ง่ายในหนังสือกระดาษแต่ทำยากบนคอมพิวเตอร์ คือถ้าซอฟต์แวร์อนุญาตให้เปิดสองอินสแตนซ์ ก็เปิด PDF ไว้สองครั้ง
ถ้ามันฉลาดเกินไปจนทำแบบนั้นไม่ได้ ก็ทำสำเนา PDF แล้วเปิดสำเนาที่สอง เลื่อนไปยังตำแหน่งต่างกัน จากนั้นใช้
alt-tabสลับไปมาบนโทรศัพท์สามารถใช้ Acrobat Reader กับ Koreader พร้อมกันได้
Sioyek มีฟีเจอร์ดี ๆ แต่ค่อนข้าง บั๊กเยอะ การแก้บั๊กและเขียนเทสต์อาจต้องใช้ความพยายามมาก
ออกนอกเรื่องเล็กน้อย แต่อยากรู้ว่ามี PDF reader ดี ๆ ที่รวม การค้นหาแบบใช้ LLM ไหม ถ้าค้นหา “cities in USA” ในเอกสารแล้วแสดงทุกจุดที่ปรากฏ เช่น New York, Los Angeles, Chicago อะไรแบบนั้นก็คงดี
ถ้า reader ตัวนี้รวมเข้ากับ Zotero ได้ก็คงดี ดูเหมือนทำเป็นปลั๊กอินได้ด้วย
เคยค่อนข้างชอบ Sioyek เหมือนเป็น Zathura ที่ฟีเจอร์เยอะกว่า แต่มีสองเรื่องที่ทำให้ใช้เป็น PDF reader หลักไม่ได้
อย่างแรก เปิด PDF หลายไฟล์พร้อมกันไม่ได้ ถ้ามี PDF เปิดอยู่แล้วและพยายามเปิด PDF ไฟล์ที่สอง ทั้งสองอินสแตนซ์จะ crash
อย่างที่สอง annotation ถูกบันทึกไว้ในเอกสารแยกต่างหาก ไม่ใช่ในตัว PDF เอง
ผู้ใช้คนอื่น ๆ ก็เคยเขียนถึงทั้งสองเรื่องนี้ไว้แล้ว ยังหาทางแก้ง่าย ๆ สำหรับข้อ 1 ไม่เจอ ส่วนทางแก้บางส่วนของข้อ 2 คือใช้ extension แต่เท่าที่จำได้ก็ยังต้องรันคำสั่งด้วยตัวเองเพื่อย้าย annotation เข้าไปในเอกสาร PDF เอง
ตามอุดมคติ ถ้ามีให้เลือกทั้งสองแบบเหมือน Zotero กับ extension ที่กล่าวถึงก็คงดี แต่เพราะสามารถเก็บ สำเนาที่สะอาด ของ PDF ไว้แชร์กับคนอื่นได้ จึงชอบให้ annotation แยกออกมาต่างหาก
อีกอย่าง ตอนนี้ PDF viewer แต่ละตัวที่รองรับ annotation ต่างก็จัดการด้วยวิธีเฉพาะของตัวเอง และโปรแกรมต่าง ๆ มักแยกไม่ค่อยออกว่าไฮไลต์หรือโน้ตที่โปรแกรมอื่นสร้างไว้เป็นของต้นฉบับหรือไม่
อย่างไรก็ตาม Zotero กับ reader บางตัวเริ่มใช้ Web Annotation Data Model(https://www.w3.org/TR/annotation-model/) เป็นกลไกสากลสำหรับจัดเก็บ annotation แล้ว หวังว่าสักวันจะสามารถดูและแก้ไขไฮไลต์กับโน้ตที่สร้างใน Sioyek บน KOReader ของ e-book reader ได้ แล้วส่งไฟล์ annotation ให้เพื่อนร่วมงานที่เป็นผู้ใช้ Zotero หรือ Obsidian/PMK ซึ่งมีสำเนา PDF แยกของไฟล์เดียวกันได้ ยังอยู่ในช่วงเริ่มต้นมาก แต่กำลังมีงานทำอยู่ https://hypothes.is ก็ทำงานคล้าย ๆ แบบนี้อยู่บ้าง
เมื่อตั้ง
should_launch_new_instanceเป็น 1 ผมเปิด PDF หลายไฟล์พร้อมกันใน Sioyek ได้ แต่ทำได้เฉพาะตอนเปิด PDF หลังไฟล์แรกจากเทอร์มินัลเท่านั้น ถ้าเปิดจากใน Sioyek หรือจาก dmenu ไฟล์ PDF ที่เปิดอยู่จะถูกแทนที่ ถึงอย่างนั้นก็ไม่เคยเจอ crash เลย ใช้ dwm บน Debianข้อ 2 มองว่าเป็นสิ่งที่พึงประสงค์
new-windowหรือส่งตัวเลือก command line--new-windowก็ได้ถ้าเกิด crash รบกวนเปิด issue ใน GitHub ด้วย