0 suara
355 tampilan

Apakah ada cara untuk kembali ke grid setelah Anda keluar? Atau untuk membuat beberapa teks berada di luar grid sementara Anda secara diam-diam melacak grid di latar belakang?

Halaman pertama buku saya disusun seperti ini:

MAIN TITLE
introductory outline (with \io markers)
\s
\p

Permasalahan ini disebabkan oleh bagian \io. Saya ingin teks dan spasi baris untuk bagian itu lebih kecil dari normal, tetapi jika saya melakukannya, maka \s dan \p tidak berada di grid. Saya bisa mengoreksinya menggunakan \vskip, tetapi karena setiap pengantar memiliki jumlah baris yang berbeda, \vskip harus berbeda untuk setiap buku. (Sekarang setelah saya menulis itu, jika tidak ada cara untuk kembali ke grid, mungkin saya bisa memperbaiki masalahnya dengan menulis perubahan atau sethook untuk setiap buku.)

Diterjemahkan secara otomatis dari English
PTXprint oleh (1,9k poin) | 355 tampilan

2 Jawaban

0 suara

Yah… ada \parlines, yang digunakan TeX untuk memberi tahu Anda berapa banyak baris yang ada dalam sebuah paragraf.
Saya rasa kode akhir paragraf bisa melakukan beberapa penghitungan dan matematika…

Diterjemahkan secara otomatis dari English
oleh (1,1k poin)

Aduh. Maaf, ada dua kesalahan cukup besar di balasan saya sebelumnya.

  1. \@parlines adalah bagian dari perhitungan yang kami gunakan untuk menghitung bab yang hilang, dll., seharusnya saya menulis \prevgraf
  2. \prevgraph memberikan Anda hampir persis apa yang Anda inginkan - kalikan ketidakrataan grid dengan itu dan selama tidak ada lompatan lain, spasi sebelum/sesudah, dll., maka Anda memiliki 'selisih X pt' yang kemudian dapat Anda gunakan untuk mengembalikan ke grid, setelah memastikan bahwa itu positif dan kurang dari 1 garis grid. Semua ini akan berfungsi pada eksekusi pertama TeX. TAPI ada catatan besar di sini:
    Itu semua baik-baik saja selama teks off-grid sebelumnya tidak pernah terpecah di antara halaman. Pada titik itu, semua perhitungan cermat perlu dibuang, karena semua teks di halaman dimulai pada baseline ke-1. Dan tanpa pemrosesan tipe @parlines, Anda tidak tahu berapa banyak baris dari paragraf itu di suatu tempat di tengah teks yang ada di halaman baru.

Jadi... setelah berpikir lebih lanjut, saya tidak bisa memikirkan cara untuk melakukan ini ketika termasuk jeda halaman tanpa file .parlocs terlibat secara langsung, dan pada titik itu akan lebih mudah untuk mengatakan 'saya ingin paragraf ini (kursor saat ini di X,Y) berada di grid' dan tidak repot-repot menghitung paragraf sama sekali. Setidaknya untuk transisi pertama.
Itu kemudian akan memerlukan eksekusi ulang TeX, jika off-grid. Sisi negatifnya adalah bahwa itu mungkin mengubah titik jeda halaman dan penempatan gambar/catatan kaki, berpotensi pada >= satu eksekusi ulang per transisi! (aduh, jika Anda berbicara tentang seluruh Alkitab!)

Diterjemahkan secara otomatis dari English
0 suara

Saya pikir ini adalah masalah yang cukup umum bagi BANYAK orang, jadi kita mungkin harus secara otomatis memaksa teks kembali ke grid setelah pengantar berakhir dan ketika bab ke-1 dimulai. (Bisakah kita melakukan itu secara programatik sehingga pengguna tidak perlu repot-repot?)

Diterjemahkan secara otomatis dari English
oleh (3,2k poin)

Catatan besar saya berlaku, jika kita ingin ini bekerja dalam setiap situasi. Mengingat orang mungkin memiliki pengantar multi-halaman, saya pikir kita secara efektif perlu (a) memberi nomor setiap paragraf dengan spasi tidak teratur, dan juga setelah itu untuk satu halaman penuh lainnya, (b) menghitung paragraf mana yang terpecah dan berapa banyak baris ke dalam paragraf jeda itu dihitung. (c) mengingatnya untuk eksekusi berikutnya, ketika kita sampai pada ‘pulihkan grid’.

Alternatifnya, adalah apa yang kita lakukan saat ini pada transisi dari satu kolom ke dua kolom: halaman yang sebagian penuh disetel, menjadi tetap, dan materi lainnya ditambahkan di bawahnya. Itu menyebabkan masalah yang berbeda dalam mode 2 kolom, misalnya… dengan penyeimbangan.

Diterjemahkan secara otomatis dari English

Pada titik waktu tertentu, apakah TeX tidak tahu di mana posisinya di halaman? Apakah itu hanya tahu bahwa itu positif relatif terhadap baris di atasnya? Saya tidak mengerti mengapa tidak ada cara untuk mengatakan "nomor bab terjadi pada nilai-y a, garis grid berikutnya berada pada nilai-y b, dan jadi kita perlu menggeser baseline bab ke bawah sebesar b-a.

Alternatifnya, adalah apa yang kita lakukan saat ini pada transisi dari satu kolom ke dua kolom: halaman yang sebagian penuh disetel, menjadi tetap, dan materi lainnya ditambahkan di bawahnya.

Sebenarnya, dalam proyek yang memicu pertanyaan ini, baik pengantar maupun teks utama adalah satu kolom. Apakah itu sesuatu yang bisa saya lakukan secara manual–menutup halaman dan memulai halaman baru di bawahnya?

Diterjemahkan secara otomatis dari English

TeX memiliki ‘galley’ (kolom paragraf dan spasi yang tidak terputus) semua disiapkan sebelum memutuskan bagaimana akan memotongnya menjadi halaman. Itu selalu menyelesaikan paragraf sebelum menguji apakah semua di galley berjumlah menjadi halaman, dan sementara itu mencoba membuat tebakan yang masuk akal tentang kapan memicu pemotongan halaman, tebakan-tebakan itu tidak sepenuhnya akurat: untuk mendapatkan penyeimbangan kolom, catatan kaki, silang-rujukan, gambar dan sidebar dan akhir halaman yang konsisten, kita sering harus mencoba panjang potongan galley yang lebih pendek. Jadi halaman baru mungkin memiliki tumpukan teks, gambar dan catatan kaki yang cukup banyak menunggu di galley-nya saat dimulai.

Ketika paragraf dimulai (titik di mana Anda harus menambahkan spasi ekstra) \pagegoal dan \pagetotal diketahui, tetapi sebenarnya, itu hanya tebakan, dan program tidak tahu misalnya gambar apa yang mungkin ditambahkan di atas halaman, atau apakah akan ada panggilan untuk meregangkan sesuatu yang fleksibel.

Ya, seharusnya mungkin untuk membuatnya menutup halaman parsial, tetapi mungkin tidak secara manual. Ada juga beberapa efek samping yang mungkin menjadi masalah besar.
Baru saja terlintas di benak saya bahwa satu opsi lain adalah menggunakan spasi yang dapat diregangkan, sedikit seperti ini:

Stretch to page height{
  {figures}
  Stretch to 35 normal lines{
    {Intro paragraph (13.4 normal lines)}
    {stretchy bit}
    {main text (21 lines)}
  }
  {stretchy bit}
  {footnotes}
}

(Bagian barunya adalah ‘Stretch to 35 lines’ untuk bagian tengah, dan tentu saja ‘35 lines’ perlu dihitung berdasarkan panjang teks yang tidak diregangkan.)
@Martin_Hosken mungkin ingin berkomentar tentang mengapa ini adalah ide yang konyol, meskipun.

Diterjemahkan secara otomatis dari English

Offline David menyarankan \par\layoutstylebreak. Itu tidak berhasil, tetapi setelah melihat bagaimana itu digunakan dalam dokumen lain, saya akhirnya mencoba \singlecolumn, dan itu berhasil!!! Meskipun saya beralih dari satu kolom ke satu kolom, itu tampaknya cukup untuk mengatur ulang grid.


Solusi itu menimbulkan pertanyaan lain:

Dokumen .sfm saya sekarang terlihat seperti

\io a bunch of introductory outline rows
\\p ~
\zgetbackongrid\*
\s The first section title

dan file *mods.text saya memiliki ini:

\sethook{end}{zgetbackongrid}{\singlecolumn}

Tetapi, saya tidak bisa membuatnya bekerja tanpa baris \\p ~ itu, yang kemudian menambahkan baris kosong ekstra yang tidak saya inginkan. Saya mengasumsikan masalahnya adalah bahwa milestone saya zgetbackongrid masih di dalam paragraf \io, tetapi saya tidak bisa memahami cara keluar dari paragraf itu tanpa menambahkan baris ekstra. \par yang David sarankan pada awalnya dalam kaitannya dengan layoutstylebreak tampaknya tidak diizinkan di dalam sethook.

Diterjemahkan secara otomatis dari English

Jika \zgetbackongrid\* adalah milestone yang kosong selain itu, Anda bisa mencoba membuatnya mengembang untuk melakukan sesuatu di dalam (tidak ada jaminan, saya belum menguji ini):

\expandafter\def\csname MS:zgetbackongrid\endcsname{\par\singlecolumn}

Itu mungkin tidak berhasil. Kode milestone mengharapkan untuk (paling banyak) menghasilkan beberapa teks tingkat karakter, dan memiliki berbagai bagian rumit untuk memastikan pengaturan gaya dll. tidak melarikan diri.

Diterjemahkan secara otomatis dari English

Menggunakan kode Anda tidak menyebabkan kesalahan dari \par, tetapi juga tampaknya tidak mengatur ulang grid seperti menggunakan \p di file .sfm.

Namun, yang berikut akhirnya berhasil dan jadi saya pikir saya bisa mengatur ulang grid tanpa memiliki spasi ekstra:
Letakkan \p ~ di file sfm.
Di file *mods.tex, gunakan ini:
\sethook{end}{zgetbackongrid}{\vskip-1\baselineskip\singlecolumn}

Terima kasih atas semua bantuan Anda.

Diterjemahkan secara otomatis dari English

Tidak ada pertanyaan terkait yang ditemukan

Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
Accept the one whose faith is weak, without quarreling over disputable matters.
Romans 14:1
3,046 pertanyaan
6,006 jawaban
5,671 komentar
2,027 pengguna