Program LyX yang misterius. Bagian 4

Disalin dari blog saya untuk membuat sumber informasi berbahasa Rusia lainnya tentang topik ini.

Artikel ini merupakan kelanjutan dari artikel berikut dalam satu siklus:

artikel 1
artikel 2
artikel 3

LyX: \\. \ Pipe \ lyxpipe


Secara umum, fungsi ini diperlukan untuk mengatur interaksi LyX dengan program lain. Secara khusus, ternyata Anda dapat memasukkan perintah melalui baris perintah di jendela program LyX yang terbuka! Pertama-tama, agar ini berfungsi, di Alat> Pengaturan> Jalur, di kotak teks saluran server LyX , masukkan yang berikut ini:

\\.\pipe\lyxpipe 

, dan .in atau .out tidak dikaitkan dengan lyxpipe ke akhir. Secara alami, klik . Selanjutnya, jendela program LyX, di mana ada kebutuhan untuk memasukkan perintah dari jendela prompt perintah, harus diluncurkan lebih awal dari baris perintah ini, dari mana perintah akan dimasukkan ke jendela program LyX ini, jika tidak, tidak ada yang akan bekerja. Berikut adalah contoh cara menulis perintah pada baris perintah untuk menyelesaikan ini:

 echo LYXCMD:sohranenie:buffer-write> \\.\pipe\lyxpipe.in echo LYXCMD:formula:math-mode:\alpha> \\.\pipe\lyxpipe.in echo LYXCMD:vstgrafiki:inset-apply:graphics filename zdes kujut hip-hop.png> \\.\pipe\lyxpipe.in 

Menurut pendapat saya, tim terakhir pantas mendapat perhatian. Perintah ini menyisipkan foto zdes kujut hip-hop.png )), yang terletak di folder yang ditentukan dalam Alat> Pengaturan ...> Jalur di kotak teks Direktori pengguna di jendela program LyX terbuka (sebelum membuka baris perintah).

LyX: Pencarian Maju dan Balik


Bagaimana ini dikonfigurasi dijelaskan di sini . Saya hanya akan memberi tahu Anda bagaimana saya melakukannya dalam bahasa Rusia. Jadi Kami menggunakan versi SumatraPDF yang tidak dapat diandalkan. Jadi kami mengunduhnya, memasangnya. Selanjutnya, di "Mulai> Program Default> Memetakan Jenis File atau Protokol ke Program Individual", pastikan bahwa file .pdf dibuka menggunakan SumatraPDF. Kemudian kita masuk ke folder C:\Users\\AppData\Roaming\SumatraPDF . Dari sana, mengikuti saran pada tautan yang disediakan, salin file SumatraPDF-settings.txt ke suatu tempat.

Selanjutnya, perlu untuk menambahkan dengan cara tertentu path ke folder yang berisi file SumatraPDF yang membuka program (saya punya folder ini C:\Program Files\SumatraPDF ) di PATH. Untuk beberapa alasan, saya menambahkan ini ke Variabel Lingkungan Pengguna untuk IVAN . Selanjutnya, path ke folder yang berisi file yang meluncurkan program LyX (bagi saya itu adalah C:\Program Files\LyX 2.0\bin ) juga harus terdapat di PATH. Selanjutnya, buka folder C:\Program Files\SumatraPDF , buka file SumatraPDF.exe . Di jendela yang muncul dari program SumatraPDF, klik kiri pada 3 bar horisontal di sudut kiri atas (atau, mungkin, sudut))), lalu, Pengaturan> Pengaturan lanjutan . Pada saat yang sama, file SumatraPDF-settings.txt yang sama akan terbuka di notepad, salinan yang sebelumnya telah kami tempatkan di beberapa tempat terpencil, jadi sekarang kami dapat melakukan apa pun yang kami inginkan dengan file ini. Dan kami akan melakukan yang berikut dengannya. Berikut adalah daftar beberapa variabel beserta nilainya:

 ReuseInstance = true ReloadModifiedDocuments = true InverseSearchCmdLine = lyxeditor.cmd "%f" %l EnableTeXEnhancements = true UseTabs = true 

Jadi disini. Dalam file SumatraPDF-settings.txt , kami memeriksa keberadaan variabel-variabel ini (kata-kata di sebelah kiri tanda sama dengan), jika ada, kami memeriksa kebetulan dari nilai (kata-kata di sebelah kanan tanda sama) dari variabel yang ditemukan dalam file ini dari daftar di atas dengan nilai-nilai seperti itu variabel yang sama dari daftar ini. Jika dalam daftar di atas nilai variabel apa pun berbeda dari nilai variabel terkait dalam file, perlu untuk mengulang nilai variabel ini sama dengan dari daftar di atas. Jika ada variabel dari daftar beserta nilainya tidak ada dalam file, kita hanya perlu menyalin variabel beserta nilainya ke file. Yah, secara pribadi, saya tidak mengubah apa pun dalam file ini: semua variabel yang tercantum dalam daftar sudah ada dalam file dan semua variabel dalam file ini diberikan nilai yang sesuai yang tercantum dalam daftar secara langsung ketika menginstal SumatraPDF. Tutup, simpan perubahannya. Itu saja, SumatraPDF setelah itu akan dikonfigurasi. Kami melanjutkan untuk mengkonfigurasi LyX. Jadi, buka program LyX jika sejauh ini belum dibuka atau karena alasan tertentu telah ditutup. Buka Alat> Pengaturan ...> Jalur . Dalam bidang teks saluran server LyX masukkan

 \\.\pipe\lyxpipe 

Selanjutnya, pergi ke Alat> Pengaturan ...> Pemrosesan File> Pengonversi . Di sana, di area di bawah frase Definisi konverter, pilih LaTeX (pdflatex) -> PDF (pdflatex) dengan tombol kiri mouse. Selanjutnya, kami menghapus isinya dari bidang teks Konverter dan menyisipkan (baik, atau masuk dengan tangan) berikut ini:

 pdflatex -interaction=nonstopmode -synctex=1 $$i 

Dan dari kotak teks juga, hapus isinya. Klik tombol Ubah . Lalu simpan . Kembali ke Alat> Pengaturan ...> Pemrosesan File> Pengonversi . Periksa apakah pengaturan disimpan. Bagi saya, ketika saya pergi ke sana sekarang, ketika mencari di kedua arah, saya masuk, setelah mengklik tombol kiri mouse LaTeX (pdflatex) -> PDF (pdflatex) , maka tempat pengaturan terlihat seperti ini:



Selanjutnya, pergi ke Alat> Pengaturan ..> Keluaran> Umum . Di sana, di kotak teks Perintah PDF , masukkan perintah berikut:

 SumatraPDF -forward-search "$$t" $$n "$$o" 

, klik Terapkan . Dengan demikian, tempat ini akan terlihat seperti ini:



Pergi ke Alat> Pengaturan ..> Penanganan File> Format File . Di sana kita akan mengatur daftar drop-down Format dengan memilih nilai PDF (pdflatex) dengan tombol kiri mouse, nilai yang ditentukan pengguna dalam daftar drop-down Penampil , dan masukkan dalam kotak teks di sebelah kanan daftar ini.

 SumatraPDF 

Saat ini ada:



Dan akhirnya, di C:\Program Files\LyX 2.0\bin buat file dengan nama lyxeditor dan ekstensi .cmd (pada kenyataannya, ternyata, ini adalah file batch yang sama) dengan konten berikut:

  @echo off SETLOCAL enabledelayedexpansion set file=%1 set row=%2 REM remove quotes from variables set file=!file:"=! set row=!row:"=! %comspec% /q /c (@echo LYXCMD:revdvi:server-goto-file-row:%file% %row%)> \\.\pipe\lyxpipe.in&&type \\.\pipe\lyxpipe.out endlocal 

Saya mengambil kode untuk file batch ini dari sini ketika saya mengklik tautan pada halaman dalam bahasa Inggris, yang isinya saya menceritakan kembali di sini (tautan ke halaman ini diberikan oleh saya di sini, hanya di atas). Jujur, tentang membuat file batch pada halaman dalam bahasa Inggris, dikatakan jauh lebih awal daripada ini dilakukan untuk saya, tetapi apa bedanya? Ngomong-ngomong, kode file batch ini mendorong saya untuk memikirkan cara memasukkan perintah pada baris perintah sehingga mereka dimasukkan dari baris ini ke jendela program LyX yang terbuka, yang berfungsi sebagai dasar untuk menulis paragraf LyX: \\. \ Pipe \ lyxpipe artikel ini. Sebelum itu, saya mencoba memasukkan perintah dari baris perintah ke jendela program LyX, mengambil perintah ini dari manual, misalnya, saya mencoba menjalankan perintah berikut dari baris perintah:

 echo "LYXCMD:test:get-xy:" >~/.lyxpipe.in 

tapi tidak ada yang berhasil untukku. Nah, dan sekarang, kembali ke pencarian terkait dengan LyX. Bagaimana cara menggunakannya? Tapi sangat sederhana. Sekarang, jika kami membuat pratinjau file .lyx terbuka, maka ketika Anda mengklik Navigasi> Pencarian maju untuk waktu yang singkat di jendela SumatraPDF yang sesuai, beberapa baris yang berisi kata yang sama disorot dalam warna ungu (setidaknya untuk saya), di sebelah kata yang sesuai di jendela LyX di kursor saat ini berkedip. Ketika Anda mengklik dua kali di jendela SumatraPDF, fokus ditransfer ke jendela LyX dan kursor mulai berkedip di sana, sementara ketika Anda mengklik di berbagai tempat di jendela SumatraPDF, kursor mulai berkedip di berbagai tempat di jendela LyX. Saya tidak bisa mengatakan sesuatu yang lebih spesifik tentang hubungan posisi kursor di LyX dengan garis-garis yang disorot di SumatraPDF, serta hubungan posisi klik dua kali di SumatraPDF dengan tempat di jendela LyX di mana kursor mulai berkedip. Jadi, tugasnya cukup rumit, jadi izinkan saya memberi Anda terjemahan halaman itu, yang isinya saya menceritakan kembali di sini, dibuat oleh browser Google: tiba-tiba saya melewatkan sesuatu. Jadi



Dari MyNotes
Diperbarui untuk versi terbaru 2.3.32019
Pengguna MiKTeX disarankan untuk meningkatkan ke versi terbaru sebelum menginstal LyX 2.3.3+ untuk Windows. Jika Anda memiliki instalasi permanen SumatraPDF , Anda hanya perlu menginstal -inverse-search SEKALI , seperti menggunakan tab, kami tidak perlu menghabiskan waktu untuk memutuskan sesi mana yang akan dibahas. Perhatikan bahwa SumatraPDF dapat memiliki beberapa jendela dan sesi, tetapi ini di luar cakupan jawaban ini. InverseSearchCmdLine = disimpan secara permanen di SumatraPDF-settings.txt. Itu tidak boleh dikustomisasi oleh editor kecuali Anda perlu menginstal ulang atau mengganti SumatraPDF-settings.txt (buat cadangan!)

Pengaturan di SumatraPDF


Perbedaan yang mencolok adalah bahwa kita kembali ke file cmd Okular yang lebih stabil ( Okular menggunakan sistem panggilan yang sama persis dengan SumatraPDF ), yang menghindari panggilan yang tidak perlu. SumatraPDF harus diinstal sedemikian rupa sehingga berfungsi dari pemanggilan sistem apa pun, seperti SumatraPDF , yang artinya harus "dalam perjalanan" (jika versi portabel digunakan, SumatraPDF.exe harus ditambahkan sementara ke jalur pengguna hingga panggilan Lyx pertama) Luncurkan SumatraPDF dan pergi ke Pengaturan> Opsi Lanjutan . Ini akan membuka file SumatraPDF-settings.txt di NotePad , sekarang setelah memeriksa entri, periksa atau ubah yang berikut.

 ReuseInstance = true ReloadModifiedDocuments = true InverseSearchCmdLine = lyxeditor.cmd "%f" %l EnableTeXEnhancements = true UseTabs = true 

Ingat bahwa %l adalah huruf kecil L, dan pastikan untuk menekan CTRL + S (Simpan File). Jika Anda perlu menambahkan c: ... LyX \ bin \ ke InverseSearchCmdLine ini, maka Anda menginstal LyX secara salah. File .cmd terletak di folder bin, yang HARUS berada di jalur sistem.

Pengaturan di LyX


Ikuti instruksi SyncTex di wiki.lyx.org/LyX/SyncTex .

"(Catatan: pencarian terbalik file .lyx dengan spasi atau karakter khusus lainnya dalam nama file tidak selalu bekerja dengan pendekatan ini pada beberapa sistem Windows)"

Catatan saya karena metode unik ini untuk memanggil saluran [1] yang digunakan oleh LyX pada Windows, kadang-kadang diperlukan bahwa file yang berfungsi dan jalurnya TIDAK HARUS MEMILIKI RUANG, jadi jika ini tidak berhasil, Anda harus meningkatkan masalah dengan dukungan LyX . Jika mereka menyediakan cara yang lebih mudah untuk memanggil sesi LyXserver aktif dengan jalur jarak jauh dalam tanda kutip, kemudian tinggalkan komentar di bawah ini. Masalahnya adalah LyXserver mengharapkan dua nilai berturut-turut:

1) SyncTeX memberikan nama file .tex 2) diikuti oleh nomor baris, jadi ketika nama file berisi spasi, bagian pertama mungkin tidak valid karena nama file dan bagian kedua jelas bukan angka, ini dapat berfungsi jika nama file diurai seperti format 8.3 yang lebih lama, tetapi kebanyakan file Windows modern menggunakan format LFN. File lyxeditor.cmd mencoba mengatasi masalah ini. Perbedaan yang nyata dibandingkan dengan pendekatan lain. Jangan menambahkan opsi / arahan pencarian-balik yang tidak perlu dan usang atau arahan-terbalik (mereka tidak diperlukan dan memperlambat permintaan pencarian- ke depan-benar.)

Alat โ†’ Pengaturan โ†’ Jalur

  • Tambahkan direktori di mana SumatraPDF.exe terletak di baris awalan PATH. (Ini tidak diperlukan untuk instalasi permanen, tetapi dapat membantu untuk penggunaan portabel).
  • Atur baris pipa LyXServer \\. \ Pipe \ lyxpipe (JANGAN gunakan tombol browse).

Alat โ†’ Pengaturan โ†’ Pemrosesan File โ†’ Pengonversi

  • Pilih format LaTeX (pdflatex) -> PDF (pdflatex)
  • Atur konverter input ke pdflatex -interaction = nonstopmode -synctex = 1 $$ i



  • Klik "Ubah" (jika tidak, perubahan akan dibatalkan).
  • Perubahan ini membutuhkan MikTeX atau TeX Live untuk membuat file FILE.synctex.gz.

Keluar dan kembali untuk memeriksa apakah sudah dimodifikasi, perlu beberapa perubahan untuk mengatur ulang dan sematkan dari satu sesi ke sesi lainnya.

Alat โ†’ Pengaturan โ†’ Keluaran โ†’ Umum.
Di bagian Pencarian Langsung, atur perintah input PDF ke SumatraPDF -lanjutkan pencarian "$$ t" $$ n "$$ o"

Alat โ†’ Pengaturan โ†’ Pemrosesan File โ†’ Format File

  • Pilih format PDF (pdflatex)
  • Setel bidang Tampilan ke Kustom menggunakan perintah SumatraPDF
  • Anda mungkin perlu menutup semua jendela SumatraPDF dan menggunakan Document โ†’ View.
  • Anda dapat mengatur perintah pencarian terbalik secara langsung di SumatraPDF dengan masuk ke "Pengaturan โ†’ Opsi Lanjutan" seperti yang dijelaskan di atas dan mengatur pencarian terbalik. Dalam hal ini, Anda mengurangi perintah Lihat ke

 SumatraPDF 



SETIAP masalah dengan panggilan Pencarian Terbalik ini harus muncul dengan dukungan Lyx, karena ini adalah metode yang direkomendasikan, bukan milikku!

[1] Pada prinsipnya, menggunakan pipa bernama dalam memori mempercepat dan mengurangi kebutuhan untuk menjalankan aplikasi melalui opsi shell, namun, seperti metode DDE atau D-bus, itu tidak dikenal oleh sebagian besar pengguna dan dapat bermasalah untuk memperbaiki masalah.

Catatan Pastikan lyx membuka file, Aktifkan tombol Maju / Mundur aktif kemudian kompilasi dan lihat akhirnya klik kanan dan pilih sekitar 6 opsi ke bawah

Tempat bukan 1 pada 1 (halaman mungkin tampak "tidak aktif"). Ini dapat membantu melihat pencarian langsung dengan mengatur SumatraPDF-settings.txt

HighlightPermanent = true

Untuk kembali ke halaman yang sesuai, cukup klik dua kali di mana saja di SumatraPDF untuk memanggil lyxeditor.cmd.


Seperti yang Anda lihat, masih ada beberapa nuansa yang tidak saya sebutkan. Namun, ketika saya mengatur semuanya, saya tidak membutuhkan nuansa ini.

LYX; penggunaan file .bat


Meskipun pada pandangan pertama tampaknya kurangnya kemampuan untuk menambahkan format ekspor baru ke LyX (sejauh yang saya mengerti, misalnya, di TeXworks, analog dari kemungkinan penambahan adalah kemampuan untuk membuat alat tata letak baru), program ini memiliki kesempatan seperti itu. Untuk memulainya, mari kita coba membuat format ekspor berikut, yang sekilas tampak memanjakan. Variabel PATH berikut didefinisikan dalam program LyX:

 $$s The LyX system directory (eg /usr/share/lyx). $$i The input file $$o The output file $$b The base name (without filename extension) in the LyX temporary directory $$p The full directory path of the LyX temporary directory $$r The full pathname to the original LyX file being processed $$f The filename (without any directory path) of the LyX file. $$l The `LaTeX name' 

ini adalah kutipan dari salah satu bagian dari manual program LyX. Kami tidak akan menerjemahkan penjelasan tentang arti, makna dari variabel-variabel ini, tetapi sebaliknya mencoba membuat format ekspor baru (dengan tampilan tombol baru di File> Ekspor ke , termasuk dengan mengklik di mana kami dapat mengekspor ke format file .lyx . , dari jendela klik ini dibuat), selama ekspor ke direktori sementara (di mana, misalnya, ketika mengekspor ke PDF {pdflatex} , file dihasilkan, selain dari .pdf dibuat, file puti.txt akan dibuat di mana ( semua) nilai dari variabel-variabel ini . Untuk melakukan ini, di folder yang telah ditambahkan ke PATH, buat file puti.bat dengan konten berikut:

 chcp 1251 cd /d %0\.. echo %1 >puti.txt echo %2 >>puti.txt echo %3 >>puti.txt echo %4 >>puti.txt echo %5 >>puti.txt echo %6 >>puti.txt echo %7 >>puti.txt echo %8 >>puti.txt echo %1/%~2 >>puti.txt 

Selanjutnya, dalam file C:\Users\\AppData\Roaming\LyX2.0\lyxrc.defaults kita di mana baris

 .................................... \Format pdf4 pdf "PDF (XeTeX)" X "pdfview" "" "document,vector,menu=export" \Format pdf5 pdf "PDF (LuaTeX)" u "pdfview" "" "document,vector,menu=export" 

tambahkan baris seperti itu

 \Format pdf6 txt "puti" F "pdfview" "" "document,vector,menu=export" 

Di sini, kata puti tidak menentukan file dengan kode, yang merupakan mesin dari format ekspor yang dibuat, tetapi dengan nama apa tombol untuk memanggil format ekspor ini ke File> Ekspor ke akan ditampilkan, dan di mana

 .................................... \converter pdflatex pdf2 "pdflatex $$i" "latex=pdflatex" \converter xetex pdf4 "xelatex $$i" "latex=xelatex" \converter luatex pdf5 "lualatex" "latex=lualatex" 

setelah baris mendefinisikan format pdf5, kami menambahkan baris berikut:

 \converter pdflatex pdf6 "puti.bat $$b $$f $$i $$l $$o $$p $$r $$s" "" 

Dan di sini kata puti mendefinisikan file dengan kode, yang merupakan mesin dari format ekspor yang dibuat. Dan di tempat file lyxrc.defaults ini , Anda harus sudah menentukan ekstensi file ini dengan kode (dalam kasus ini .bat ), jika tidak maka tidak akan berfungsi! .. Dan kemudian, seperti yang Anda duga, parameternya ditunjukkan, di satu sisi, dengan file dengan kode ini diluncurkan ketika mengekspor ke format yang dibuat dimulai, dan, di sisi lain, parameter ini dipanggil dalam bentuk yang diketahui oleh program LyX, dan oleh karena itu ketika Anda memanggil file ini dengan kode dari file yang dibuka di LyX, LyX sebelum membuka file dengan kode program yang sesuai dengan parameter, beberapa dan dari mana mereka dibentuk dari bagian path lengkap ke file yang diekspor, dan yang lain dari path lengkap ke beberapa folder signifikan dari sistem, itu menggantikan parameter ini, dinamai dalam formulir ini dengan nilai yang hampir nyata, sehingga bisa dikatakan, yang hampir cocok untuk digunakan dalam perintah baris. Mengapa "hampir" akan menjadi jelas nanti. Itu saja, Anda tidak perlu melakukan hal lain di file lyxrc.defaults : tidak menambahkan, di sana, \ editor_alternatives atau \ viewer_alternatives baru , atau hal lain seperti itu ... Selanjutnya, setelah menyimpan file lyxrc.defaults diubah dengan cara ini dan memulai kembali Program LyX di File> Ekspor ke , tombol baru muncul:



Sebelum mengkliknya, klik Lihat> Lihat Pesan (ketika saya menggunakan LyX yang diinstal dari file yang dapat dieksekusi yang diunduh dari sumber lain, tombol itu disebut Lihat pesan , karena salinan program tersebut menggunakan file pelokalan yang berbeda .mo ), sementara biasanya di bagian bawah jendela program LyX muncul area yang disebut Progress / Debug Messages . Sekarang Anda dapat mengklik tombol yang kami buat. Pada saat yang sama, di area Pesan kemajuan / debugging , informasi tentang proses ekspor mulai berkedip, bergulir ke bawah. Setelah akhir flicker seperti itu, kami mencari path ke folder sementara di mana file yang muncul di sepanjang jalan ditempatkan, di samping file jenis yang ingin Anda terima di folder yang sama dengan file .lyx diekspor. Semua jalur tersebut kurang lebih mirip satu sama lain, sehingga tidak ada kesalahan. Sebagai contoh, berikut adalah salah satu cara ini:

 D:\1-kat-LyX\lyx_tmpdir.gq2748\lyx_tmpbuf2 

Buka folder ini. Akan ada, antara lain, file puti.txt , yang kami tetapkan sebagai output untuk format ekspor ini. Membuka itu, kita akan melihat sesuatu seperti berikut:

 D:/1-kat-LyX/lyx_tmpdir.gq2748/lyx_tmpbuf2/newfile2 newfile2.lyx newfile2.tex $$l newfile2.txt D:/1-kat-LyX/lyx_tmpdir.gq2748/lyx_tmpbuf2/ C:/DocLyX/ $$s D:/1-kat-LyX/lyx_tmpdir.gq2748/lyx_tmpbuf2/newfile2/newfile2.lyx 

File konten tersebut dibentuk selama ekspor ke format ekspor file yang saya buat C:\DocLyX\newfile2.lyx . Seperti yang Anda lihat, bahkan tidak semua parameter telah diperluas ke nilai-nilainya, yang, bagaimanapun, tidak mencegah pembuatan beberapa format ekspor lain yang telah saya bayangkan. Namun, masalah seperti itu ditemukan di sini, yang terdiri dari kompatibilitas "hampir" dengan baris perintah, yang saya sebutkan di atas. Yaitu: pemisah di jalur yang diperoleh dalam file output .txt adalah / karakter daripada karakter tradisional, setidaknya untuk Windows, \ , jadi untuk dapat menggunakan jalur yang diperoleh dengan cara ini, Anda kemungkinan besar perlu mengajukan dengan kode yang seharusnya digunakan sebagai mesin untuk format ekspor yang dibuat, termasuk bagian untuk mengganti / dengan \ . Kami akan mengingat hal ini di masa mendatang. Membandingkan urutan parameter terdaftar dalam file lyxrc.defaults yang saya paksa mulai (dan dapat diluncurkan))) file puti.bat , file puti.bat itu sendiri dengan isi file puti.txt , saya menyimpulkan bahwa untuk membuat yang lain , , , , , LyX.Ini $$ i - variabel yang menampilkan setelah mengganti ke dalam file puti.txt nama file tex , yang saya harus keluar dari file saat diedit .lyx , sehingga segera setelah penerimaan yang berada di bahwa bermain off mesin yang file dari gudang program MiKTeX yang diinstal dan dikonfigurasi, yang saya uraikan untuk format ekspor yang saya buat - sepenuhnya sesuai dengan proses ekspor ke format yang semula tersedia dari penulis program. Dengan demikian file pemrosesan, Anda dapat menggunakan file yang saya buat dengan kode beberapa ekstensi. Dan $$ r adalah path ke folder dengan file .lyx yang sedikit berubah dalam spesifisitasnya dari program LyX, dengan mengekspor ke format saya, pada awal ekspor ini saya akan mendapatkan file .tex yang baru saja saya bicarakan. Seperti yang dapat Anda lihat di foto menu Ekspor yang saya modifikasi , saya tidak membatasi diri untuk membuat satu format ekspor puti baru di komputer saya . Mari kita membahas lebih rinci tentang format ekspor yang saya buat ini. Biasanya, ketika mengekspor ke beberapa format "asli" dari program LyX, semua file yang kebetulan dengan ini ditempatkan oleh program LyX di direktori sementara yang sesuai. Mari kita coba untuk membuat format ekspor di mana file-file ini akan ditempatkan di folder yang sama dengan file .lyx yang diekspor . Nah, tindakan dengan file lyxrc.defaultspada dasarnya akan sama dengan tindakan dengan file ini saat membuat format ekspor puti . Saya juga menambahkan baris ke tempat-tempat yang sesuai dalam file ini:

 \Format pdf7 pdf "pdflatex v papke" F "pdfview" "" "document,vector,menu=export" 

dan

 \converter pdflatex pdf7 "pdflatex-v-papke.bat $$r $$i" "" 

Semuanya jelas di sini. Perbedaan nyata antara format ekspor puti yang saya buat sebelumnya dan format ekspor yang sedang dibuat sekarang adalah karena perbedaan antara mesin (dalam hal ini, antara file .bat), yang saya masukkan pada format ekspor dan yang saya masukkan dalam format ini. Yaitu, sebagai mesin untuk format ini saya menggunakan file pdflatex-v-papke.bat dengan konten berikut:

 cd /d %0\.. chcp 1251 echo LYXCMD:sohranenie:buffer-write> \\.\pipe\lyxpipe.in if exist perehod.bat (goto :vyhod3) else (goto :vhod) :vhod echo %1 > put0.txt echo cd /d %%0\..>> pereim.bat echo SetLocal EnableExtensions EnableDelayedExpansion>> pereim.bat echo Set infile=put0.txt>> pereim.bat echo Set outFile=put.txt>> pereim.bat echo Set find=/>>pereim.bat echo Set replace=\>>pereim.bat echo for /F "UseBackQ delims=" %%%%n in ("%%infile%%") do (>> pereim.bat echo set "LINE=%%%%n">> pereim.bat echo set "LINE=!LINE:%%find%%=%%replace%%!">> pereim.bat echo echo.!LINE!^>^>%%outFile%%>> pereim.bat echo )>> pereim.bat echo exit>> pereim.bat start /b pereim.bat :vhod1 if exist put.txt (goto :vyhod1) else (goto :vhod1) :vyhod1 echo chcp 1251 > perehod.bat echo cd /D^^>>perehod.bat more < put.txt >> perehod.bat echo del %~n2.tex>> perehod.bat echo :vhod2 >> perehod.bat echo lyx -e latex %~n2.lyx>> perehod.bat echo if exist %~n2.tex (goto :vyhod2) else (goto :vhod2) >> perehod.bat echo :vyhod2 >> perehod.bat echo pdflatex %2 >> perehod.bat echo taskkill /f /im pdflatex.exe >> perehod.bat echo exit >> perehod.bat echo :vhod3 if exist perehod.bat (goto :vyhod3) else (goto :vhod3) :vyhod3 start perehod.bat pdflatex %1 rem            exit.bat exit 

Bagaimana cara kerja file batch ini? Pertama-tama, melihat parameter yang saya buat file batch ini program panggilan LyX, menulisnya di file lyxrc.defaults , kita melihat bahwa ini terjadi dengan parameter "path folder yang berisi file yang diekspor dalam bentuk khusus LyX" dan " nama file yang diekspor, tetapi dengan ekstensi .tex ", dan urutan parameternya penting. Jadi, file batch ini pertama-tama membuat transisi ke folder sementara di mana file yang menyertainya terbentuk ketika mengekspor ke beberapa "format asli". Kemudian, karena kemungkinan adanya huruf Cyrillic dalam parameter startup dari file batch pdflatex-v-papke.bat , kami mengubah pengkodean pada windows 1251 di jendela command prompt di mana file batch ini akan dieksekusi. Kemudian, dengan memanfaatkan kemampuan program LyX untuk responsif terhadap perintah dari baris perintah, tentang yang (kemungkinan) saya bicarakan di sini, kami, mengingat kemungkinan perubahan dalam file yang diekspor, sebelum tindakan utama dengan file ini, pertama-tama simpan file yang diekspor dengan .lyxperintah tersebut

 echo LYXCMD:sohranenie:buffer-write> \\.\pipe\lyxpipe.in 

sehingga Anda tidak melakukannya secara manual setiap kali. Tim

 if exist perehod.bat (goto :vyhod3) else (goto :vhod) 

dengan label yang digunakan di dalamnya :vyhod3dan :vhodberdiri sebelum dan sesudah perintah ini, ia tidak membuat apa pun dengan sendirinya, tetapi ia melakukan ini. File-file berikut ini yang muncul di folder sementara terkait sebagai hasil dari file batch pdflatex-v-papke.bat adalah (dalam urutan tampilan) file put0.txt , pereim.bat , put.txt , perehod.bat , yang akan dibuat dengan setiap pratinjau, ekspor, dalam hal apa pun, dengan kemungkinan pengeditan file .lyxyang saat ini terbuka , itu tidak perlu, hanya diperlukan untuk pertama kalinya. Dalam hal ini, untuk pertama kalinya, file perehod.bat terakhir akan dibuat di direktori sementara, 3 file lainnya di folder sementara ini tidak akan ada jika file ini tidak ada di folder ini. Karena itu, dalam kondisi tersebut, ifkami menulis keberadaan file ini. Jika, ketika file batch pdflatex -v-papke.bat mulai berfungsi, file ini tidak ada di folder sementara yang sesuai, file batch pdflatex-v-papke.bat berjalan sepanjang cabang membuat 4 file dalam folder sementara yang sesuai - put0.txt , pereim.bat , put.txt , perehod.batdan pindah ke tim selanjutnya. Jika 4 file ini di direktori sementara sudah ada, ada transisi langsung ke perintah berikutnya, yang saya bicarakan di kalimat sebelumnya. Mari kita bahas keempat file ini. Karena parameter pertama yang digunakan program LyX untuk meluncurkan file pdflatex-v-papke.bat adalah "path ke folder yang berisi file yang diekspor dalam bentuk khusus LyX", path ini akan ditampilkan di put0.txt di formulir ini. Namun, jalur dalam formulir ini tidak cocok untuk digunakan pada baris perintah (di sana, pemisah, sehingga untuk berbicara, dari tingkat yang berbeda dari bersarang folder adalah karakter, /bukan karakter yang diharapkan oleh baris perintah \). Untuk alasan ini, langkah selanjutnya dalam pengoperasian file pdflatex-v-papke.batHal ini untuk membuat file sementara direktori batch yang sama pereim.bat , yang tugasnya adalah untuk mengambil isi dari file put0.txt , mengganti isi /pada \dan membakar file yang dihasilkan put1.txt . Tindakan selanjutnya dari pdflatex-v-papke.bat adalah meluncurkan file batch pereim.bat . Agar jendela hitam untuk mengeksekusi baris perintah untuk file batch ini tidak muncul, saya menambahkan kunci ke perintah yang memulai file batch ini /b. Saya membuat (saya tidak tahu mengapa) file pereim.bat dengan memulai di jendela perintah terpisah. Karena itu, saat ini menghasilkan file put1.txt , pengoperasian file utamapdflatex-v-papke.bat melanjutkan ke langkah berikutnya, di mana file put1.txt sudah diasumsikan ada di direktori sementara yang sesuai . Karena alasan ini, kesalahan dapat terjadi dalam pengoperasian file pdflatex-v-papke.bat utama . Untuk mencegah hal ini, langkah selanjutnya setelah memulai file batch pereim.bat adalah untuk mengulang file batch utama dengan bagian kode tersebut:

 :vhod1 if exist put.txt (goto :vyhod1) else (goto :vhod1) :vyhod1 

Bagian kode ini memeriksa keberadaan file put.txt di direktori sementara yang sesuai dengan file yang diekspor. Jika file ini tidak ada di folder ini, file batch kembali ke label :vhod1dan kembali memeriksa keberadaan file put.txt di direktori sementara yang sesuai dengan file yang diekspor dan seterusnya hingga file ini muncul di folder ini. Segera setelah pemindaian menemukan file ini, ia keluar dari loop dan menjalankan perintah berikut dari file batch pdflatex-v-papke.bat . Dan langkah selanjutnya dalam pekerjaan file batch ini adalah membuat file batch perehod.bat di direktori sementara yang sesuai , menunggu penampilan file batch ini (bagian kode bertanggung jawab untuk ini

 :vhod3 if exist perehod.bat (goto :vyhod3) else (goto :vhod3) :vyhod3 

file batch pdflatex-v-papke.bat ) dan peluncuran file batch perehod.bat . Saya membuat file batch perehod.bat dalam file terpisah karena dalam perjalanan kerjanya ia harus mengikuti path yang terdapat dalam file put.txt yang dibuat sebelumnya dan path ini masih perlu diekstraksi dari file ini, yang dilakukan oleh perintah

 more < put.txt 

Secara umum, misalnya, isi file perehod.bat adalah sebagai berikut (dengan file yang diekspor C:\DocLyX\newfile2.lyx):

 chcp 1251 cd /D^ C:\DocLyX\ del newfile2.tex :vhod2 lyx -e latex newfile2.lyx if exist newfile2.tex (goto :vyhod2) else (goto :vhod2) :vyhod2 pdflatex newfile2.tex taskkill /f /im pdflatex.exe exit 

Apa yang dilakukan file batch ini? Pada awalnya, karena kemungkinan path lengkap ke file yang diekspor dari huruf Cyrillic, pengkodean jendela perintah di mana file batch perehod.bat mulai berjalan beralih ke windows 1251 . Kemudian 2 baris berikutnya dieksekusi, yang sebenarnya adalah satu perintah. Rangkaian garis-garis ini menjadi satu perintah dilakukan oleh tanda ^di akhir baris pertama. Arti dari perintah gabungan ini adalah bahwa pekerjaan file batch perehod.bat ditransfer ke folder dengan file yang diekspor .lyx. Kunci telah /Dditambahkan karena saya memiliki LyX di Tools> Settings ...> Paths di kotak teks direktori sementarasudah diatur sehingga ketika Anda membuka LyX, direktori sementara ini dibuat pada disk selain dari yang di mana baris perintah biasanya diluncurkan dalam folder tertentu. Selanjutnya, file dengan nama yang sama dengan file yang diekspor dihapus .lyx, tetapi dengan ekstensi .tex, yang, mungkin, diperoleh dalam folder yang sama dengan file yang diekspor .lyxketika mengekspor file yang diekspor yang .lyxdiproduksi sebelumnya. Lebih lanjut, secara teori, file .lyxyang sedang kita tangani harus diekspor ke format .texdiikuti oleh perulangan file batch pdflatex-v-papke.bat hingga file dengan nama yang sama dengan file yang diekspor muncul di direktori sementara yang sesuai .lyx, tetapi dengan ekstensi.tex. Namun, dengan urutan perintah ini, file batch (batch) pdflatex-v-papke.bat kadang-kadang loop , karena file dengan nama yang sama dengan file yang diekspor .lyx, tetapi dengan ekstensi, .textidak muncul. Oleh karena itu, .texlebih baik untuk menempatkan perintah ekspor setelah label yang file batch kembali jika tidak ada file dalam folder dengan file yang diekspor .lyxdengan nama yang sama dengan file ini .lyx, tetapi dengan ekstensi .tex. Nah, maka semuanya sederhana. File pdflatex diproses dengan file dengan nama yang sama dengan file yang diekspor .lyx, tetapi dengan ekstensi .tex, maka perintah diberikan untuk membunuh proses pdflatex yang mungkin tetap tertutup setelah pemrosesan ini (ini terjadi) dan tutup file batchperehod.bat . Kembali ke file pdflatex-v-papke.bat . Dengan file batch ini, setelah memulai file batch perehod.bat , sebuah perintah dieksekusi, artinya ditunjukkan dalam komentar untuk perintah ini. Dan inilah peluncuran keluar file batch yang sama sekali tidak perlu (terletak di beberapa folder yang ditambahkan ke PATH) dengan konten yang bahkan lebih aneh

 date /t exit 

Mengapa file batch ini? Faktanya adalah ketika saya masih bereksperimen dengan file batch puti.bat , antara lain seperti itu, saya mencoba bukan mesin salah satu format file puti1.bat saya , jadi ketika saya di ini dan file lain yang digunakan untuk itu tujuan, tidak menunjukkan peluncuran file batch ini, ketika saya mengekspor ke LyX dalam format yang sesuai yang saya buat, kesalahan berikut dengan keras merangkak keluar:



Dan saya tidak bisa menemukan cara untuk menyingkirkannya. Kemudian, murni karena kecelakaan, saya punya puti1.bat di file batch sayatim kedua dari belakang adalah tim yang meluncurkan beberapa file batch. Kesalahan ini tidak lagi muncul. Sejauh yang saya ingat, file batch acak itu menghasilkan beberapa file dengan kerjanya. Saya tidak membutuhkannya. Kemudian saya memutuskan untuk mencoba menempatkan perintah yang tidak menghasilkan file apa pun ke dalam file batch ini. Saya mencoba tanggalnya. Ternyata: kesalahan yang ditunjukkan pada foto berhenti melayang. Dan meninggalkannya. Meskipun, setidaknya bunuh aku, aku tidak mengerti mengapa ini membantu, tetapi akan menarik untuk mengetahui mengapa ini berhasil. Nah, kemudian keluarlah dari file batch pdflatex-v-papke.bat . Itu saja. Sebagainya.TeXworks memiliki alat tata letak berikut:



Buat format ekspor di LyX, yang pertama mengekspor file yang diekspor .lyxke .tex, dan kemudian xelatex.exe dengan opsi .texdiatur terhadap file yang dihasilkan . Pada saat yang sama, semua file yang dibuat secara tidak sengaja saat mengekspor beberapa file ke format ini akan ditempatkan di folder yang sama dengan file yang diekspor. Tindakan yang sangat mirip dengan yang dijelaskan di atas. Kami membuat format ini muncul di File> Ekspor ke ... dengan nama xelatex v papke , letakkan mesin xelatex-v-papke.bat pada format ekspor ini sebagai berikut:-undump=xelatex.lyx

 cd /d %0\.. chcp 1251 echo LYXCMD:sohranenie:buffer-write> \\.\pipe\lyxpipe.in if exist perehod.bat (goto :vyhod3) else (goto :vhod) :vhod echo %1 > put0.txt echo cd /d %%0\..>> pereim.bat echo SetLocal EnableExtensions EnableDelayedExpansion>> pereim.bat echo Set infile=put0.txt>> pereim.bat echo Set outFile=put.txt>> pereim.bat echo Set find=/>>pereim.bat echo Set replace=\>>pereim.bat echo for /F "UseBackQ delims=" %%%%n in ("%%infile%%") do (>> pereim.bat echo set "LINE=%%%%n">> pereim.bat echo set "LINE=!LINE:%%find%%=%%replace%%!">> pereim.bat echo echo.!LINE!^>^>%%outFile%%>> pereim.bat echo )>> pereim.bat echo exit>> pereim.bat start /b pereim.bat :vhod1 if exist put.tex (goto :vyhod1) else (goto :vhod1) :vyhod1 echo chcp 1251 > perehod.bat echo cd /D^^>>perehod.bat more < put.txt >> perehod.bat echo del %~n2.tex>> perehod.bat echo :vhod2 >> perehod.bat echo lyx -e latex %~n2.lyx>> perehod.bat echo if exist %~n2.tex (goto :vyhod2) else (goto :vhod2) >> perehod.bat echo :vyhod2 >> perehod.bat echo miktex-xetex.exe -undump=xelatex %2 >> perehod.bat echo taskkill /f /im pdflatex.exe >> perehod.bat echo exit >> perehod.bat :vhod3 if exist perehod.bat (goto :vyhod3) else (goto :vhod3) :vyhod3 start perehod.bat pdflatex %1 rem            exit.bat exit 

Seperti yang Anda lihat, file batch ini memiliki struktur yang persis sama dengan file pdflatex-v-papke.bat . Perbedaannya hanya dalam satu perintah tunggal miktex-xetex.exe -undump=xelatex %2, yang memproses nama yang sama dengan file yang diekspor ke format file yang saat ini dibuat .tex, yang sudah kami terima di awal ekspor ini. Dan dengan cara yang sama, dalam file lyxrc.defaults, kami memastikan bahwa file batch xelatex-v-papke.batdimulai dengan parameter yang $$r $$iditentukan dalam file lyxrc.defaults tanpa gagal dalam urutan ini. Saya perhatikan bahwa agar format ekspor ini berfungsi dengan file .lyxyang berisi huruf Cyrillic, .texopsi utf8di\usepackage[utf8]{inputenc}atau perintah terakhir tidak ada sama sekali. Yang terakhir (omong-omong, hal yang sangat berguna: dengan cara ini, di bagian pembukaan yang tidak dapat diakses, Anda dapat menghapusnya inputencdan melalui Document> Preferences> LaTeX Preamble menulis sesuai kebutuhan untuk ini) dengan mengatur Document> Settings> Switch bahasa Mengkode nilai dari daftar drop-down Other (nama dari ini) daftar tergantung pada file lokalisasi yang digunakan .mo) pada (XeTeX) (utf8). Sebagai contoh terakhir, pertimbangkan untuk membuat format ekspor, ketika mengekspornya, tergantung pada ada / tidaknya kode grafis Asymptote dalam file yang diekspor, satu atau beberapa urutan perintah dieksekusi (pdflatex + asymptote + pdflatex atau hanya pdflatex). Pada saat yang sama, terlepas dari ada atau tidaknya kode grafik Asymptote dalam file ini, semua file secara tidak sengaja berfungsiTEX.lyx.lyx.pdf.lyx(Ctrl + L), dalam blok kode ini kami menyisipkan beberapa kata abracadabra yang tidak akan ditemukan di tempat lain dari file .lyx ini - kami akan setuju untuk menggunakan beberapa kata Rusia untuk ini, ditulis untuk kebingungan lebih banyak dalam urutan terbalik . Biarkan kata abrakadabra ini menjadi ovols. Kami menulis kata abracadabra ini ke dalam blok kode TeX yang disisipkan, kemudian pada blok TeX ini kami menyisipkan baris kosong, baris baru dan di baris baru ini kami mengetik lagi kata ovols . Kami menempatkan di baris kosong di antara ovols ini \begin{asy}, 2 baris baru dan di baris baru kedua kita masukkan \end{asy}. Jika diinginkan, urutan semua tindakan ini dapat diotomatisasi menggunakan file.jskonten yang relevan. Mungkin kemudian saya akan menulis tentang ini lebih terinci. Dan akhirnya, di antara tag asy ini, kami menulis kode untuk pola yang diinginkan. Untuk terlihat seperti ini, misalnya, mungkin terlihat seperti ini:



kata abracadabra diperlukan karena ketika saya tidak menggunakan teknik ini, ketika melihat file yang dibuat selama ekspor ke format pdflatex .texdi direktori sementara yang sesuai, baris kosong yang dimasukkan sebelum dan setelah lingkungan asy menghilang, yang menyebabkan munculnya yang terbatas .pdf, berbeda dari apa yang dikandung. Selanjutnya, tentu saja, jangan lupa menghubungkan paket asymptote ke Document> Settings ...> LaTeX Preamble . Dalam file lyxrc.defaults, tentukan mesin untuk format ini semua dengan parameter yang sama$$r $$i. Saatnya memberi kode untuk mesin format ini. Ini akan menjadi, seperti biasa, file .bat. Sebut saja pdflatex + asymptote + pdflatex-v-lyx.bat . Seperti biasa, file ini harus ada di folder yang ditambahkan ke PATH. Berikut adalah kode untuk file batch ini:

 cd /d %0\.. if exist perehod.bat (goto :vyhod6) else (goto :vhod) :vhod echo %1 > put0.txt echo cd /d %%0\..> pereim.bat echo SetLocal EnableExtensions EnableDelayedExpansion>> pereim.bat echo Set infile=put0.txt>> pereim.bat echo Set outFile=put.txt>> pereim.bat echo Set find=/>>pereim.bat echo Set replace=\>>pereim.bat echo for /F "UseBackQ delims=" %%%%n in ("%%infile%%") do (>> pereim.bat echo set "LINE=%%%%n">> pereim.bat echo set "LINE=!LINE:%%find%%=%%replace%%!">> pereim.bat echo echo.!LINE!^>^>%%outFile%%>> pereim.bat echo )>> pereim.bat echo exit>> pereim.bat start /b pereim.bat :vhod1 if exist put.txt (goto :vyhod1) else (goto :vhod1) :vyhod1 echo echo LYXCMD:sohranenie:buffer-write^> \\.\pipe\lyxpipe.in >perehod.bat echo cd /D ^^>>perehod.bat more < put.txt >> perehod.bat echo :vhod1>>perehod.bat echo lyx -e latex %~n2.lyx>> perehod.bat echo if exist %~n2.tex (goto :vyhod1) else (goto :vhod1)>>perehod.bat echo :vyhod1>>perehod.bat echo echo cd /d %%%%0\..^> zamena.bat>>perehod.bat echo echo chcp 65001^>^> zamena.bat>>perehod.bat echo echo SetLocal EnableExtensions EnableDelayedExpansion^>^> zamena.bat>>perehod.bat echo echo Set infile=%~n2.tex^>^> zamena.bat>>perehod.bat echo echo Set outFile=zameneno.tex^>^> zamena.bat>>perehod.bat echo echo Set find=ovols^>^>zamena.bat>>perehod.bat echo echo Set replace=^>^>zamena.bat>>perehod.bat echo echo for /F "UseBackQ delims=" %%%%%%%%n in ("%%%%infile%%%%") do (^>^> zamena.bat>>perehod.bat echo echo set "LINE=%%%%%%%%n"^>^> zamena.bat>>perehod.bat echo echo set "LINE=!LINE:%%%%find%%%%=%%%%replace%%%%!"^>^> zamena.bat>>perehod.bat echo echo echo.!LINE!^^^>^^^>%%%%outFile%%%%^>^> zamena.bat>>perehod.bat echo echo )^>^> zamena.bat>>perehod.bat echo echo exit^>^> zamena.bat>>perehod.bat echo :vhod2>>perehod.bat echo if exist zamena.bat (goto :vyhod2) else (goto :vhod2)>>perehod.bat echo :vyhod2>>perehod.bat echo start zamena.bat>>perehod.bat echo :vhod3>>perehod.bat echo if exist zameneno.tex (goto :vyhod3) else (goto :vhod3)>>perehod.bat echo :vyhod3>>perehod.bat echo del %~n2.tex>>perehod.bat echo rename zameneno.tex %~n2.tex>>perehod.bat echo del %~n2.aux>>perehod.bat echo if exist %~n2-*.asy (goto :vhod4) else (goto :vhod5)>>perehod.bat echo :vhod4>>perehod.bat echo del %~n2-*.*>>perehod.bat echo :vhod5>>perehod.bat echo pdflatex %2 >> perehod.bat echo for %%%%f in (%~n2-*.asy) do asy %%%%f >> perehod.bat echo pdflatex %2 >> perehod.bat echo exit >> perehod.bat :vhod6 if exist perehod.bat (goto :vyhod6) else (goto :vhod6) :vyhod6 start perehod.bat 

Pada prinsipnya, semuanya sama di sini. Hanya file zamena.bat yang diperlukan untuk mengganti ovol dengan apa-apa, yaitu, untuk menghapus kata abracadabra ini. Seperti biasa, bagian dari kode tampilan

 :vhod ยซ - ยป If exist ยซ- ยป... :vyhod ยซ   - ยป 

melayani, sehingga untuk berbicara, untuk menunda tindakan lebih lanjut dari file batch yang sesuai sampai munculnya "file ini dan itu" di folder kerja file batch ini, meskipun sebenarnya file batch terus bekerja.

Source: https://habr.com/ru/post/id485298/


All Articles