emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/calendar/cal-tex.el,v


From: Glenn Morris
Subject: [Emacs-diffs] Changes to emacs/lisp/calendar/cal-tex.el,v
Date: Wed, 25 Jul 2007 08:52:43 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Glenn Morris <gm>       07/07/25 08:52:43

Index: cal-tex.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/calendar/cal-tex.el,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -b -r1.32 -r1.33
--- cal-tex.el  24 Jul 2007 05:58:43 -0000      1.32
+++ cal-tex.el  25 Jul 2007 08:52:43 -0000      1.33
@@ -31,6 +31,21 @@
 ;; This collection of functions implements the creation of LaTeX calendars
 ;; based on the user's holiday choices and diary file.
 
+;; The user commands are:
+;; cal-tex-cursor-year
+;; cal-tex-cursor-year-landscape
+;; cal-tex-cursor-filofax-year
+;; cal-tex-cursor-month-landscape
+;; cal-tex-cursor-month
+;; cal-tex-cursor-week
+;; cal-tex-cursor-week2
+;; cal-tex-cursor-week-iso
+;; cal-tex-cursor-week-monday
+;; cal-tex-cursor-filofax-2week
+;; cal-tex-cursor-filofax-week
+;; cal-tex-cursor-filofax-daily
+;; cal-tex-cursor-day
+
 ;; TO DO
 ;;
 ;;     (*)  Add holidays and diary entries to daily calendar.
@@ -56,24 +71,21 @@
 (defcustom cal-tex-which-days '(0 1 2 3 4 5 6)
   "The days of the week that are displayed on the portrait monthly calendar.
 Sunday is 0, Monday is 1, and so on.  The default is to print from Sunday to
-Saturday.  For example, use
-
-                    (setq cal-tex-which-days '(1 3 5))
-
-to only print Monday, Wednesday, Friday."
+Saturday.  For example, use '(1 3 5) to only print Monday, Wednesday, Friday."
   :type '(repeat integer)
   :group 'calendar-tex)
 
 (defcustom cal-tex-holidays t
   "Non-nil means holidays are printed in the LaTeX calendars that support it.
-If finding the holidays is too slow, set this to nil."
+Setting this to nil may speed up calendar generation."
   :type 'boolean
   :group 'calendar-tex)
 
 (defcustom cal-tex-diary nil
   "Non-nil means diary entries are printed in LaTeX calendars that support it.
 At present, this only affects the monthly, filofax, and iso-week
-calendars (i.e. not the yearly, plain weekly, or daily calendars)."
+calendars (i.e. not the yearly, plain weekly, or daily calendars).
+Setting this to nil may speed up calendar generation."
   :type 'boolean
   :group 'calendar-tex)
 
@@ -88,17 +100,18 @@
           (day (calendar-day-number date))
           (days-remaining (- (calendar-day-number (list 12 31 year)) day)))
      (format "%d/%d" day days-remaining))
-  "An expression in the variable `date' whose value is placed on date.
-The string resulting from evaluating this expression is placed at the bottom
-center of `date' on the monthly calendar, next to the date in the weekly
-calendars, and in the top center of daily calendars.
-
-Default is ordinal day number of the year and the number of days remaining.
-As an example, setting this to
-
-    '(progn
-       (require 'cal-hebrew)
-       (calendar-hebrew-date-string date))
+  "Lisp expression giving the date format to use in the LaTeX calendars.
+This should be an expression involving the variable `date'.  When
+this expression is called, `date' is a list of the form '(MONTH DAY YEAR)'.
+
+The string resulting from evaluating this expression is placed at
+the bottom center of each date in monthly calendars, next to the
+date in the weekly calendars, and in the top center of daily calendars.
+
+The default is ordinal day number of the year and the number of
+days remaining.  As an example, setting this to
+
+    '(calendar-hebrew-date-string date)
 
 will put the Hebrew date at the bottom of each day."
   :type 'sexp
@@ -115,12 +128,14 @@
   :group 'calendar-tex)
 
 (defcustom cal-tex-daily-start 8
-  "The first hour of the daily LaTeX calendar page."
+  "The first hour of the daily LaTeX calendar page.
+At present, this only affects `cal-tex-cursor-day'."
   :type 'integer
   :group 'calendar-tex)
 
 (defcustom cal-tex-daily-end 20
-  "The last hour of the daily LaTeX calendar page."
+  "The last hour of the daily LaTeX calendar page.
+At present, this only affects `cal-tex-cursor-day'"
   :type 'integer
   :group 'calendar-tex)
 
@@ -137,7 +152,7 @@
 You can use this to do postprocessing on the buffer.  For example, to change
 characters with diacritical marks to their LaTeX equivalents, use
      (add-hook 'cal-tex-hook
-               '(lambda () (iso-iso2tex (point-min) (point-max))))"
+              (lambda () (iso-iso2tex (point-min) (point-max))))"
   :type 'hook
   :group 'calendar-tex)
 
@@ -165,15 +180,15 @@
 ;;; Definitions for LaTeX code
 ;;;
 
-(defvar cal-tex-day-prefix "\\caldate{%s}{%s}"
+(defconst cal-tex-day-prefix "\\caldate{%s}{%s}"
   "The initial LaTeX code for a day.
 The holidays, diary entries, bottom string, and the text follow.")
 
-(defvar cal-tex-day-name-format "\\myday{%s}%%"
+(defconst cal-tex-day-name-format "\\myday{%s}%%"
   "The format for LaTeX code for a day name.
 The names are taken from `calendar-day-name-array'.")
 
-(defvar cal-tex-cal-one-month
+(defconst cal-tex-cal-one-month
   "\\def\\calmonth#1#2%
 {\\begin{center}%
 \\Huge\\bf\\uppercase{#1} #2 \\\\[1cm]%
@@ -181,9 +196,9 @@
 \\vspace*{-1.5cm}%
 %
 "
-  "LaTeX code for the month header.")
+  "LaTeX code for the month header, for a single month calendar.")
 
-(defvar cal-tex-cal-multi-month
+(defconst cal-tex-cal-multi-month
   "\\def\\calmonth#1#2#3#4%
 {\\begin{center}%
 \\Huge\\bf #1 #2---#3 #4\\\\[1cm]%
@@ -191,16 +206,16 @@
 \\vspace*{-1.5cm}%
 %
 "
-  "LaTeX code for the month header.")
+  "LaTeX code for the month header, for a multi-month calendar.")
 
-(defvar cal-tex-myday
+(defconst cal-tex-myday
   "\\renewcommand{\\myday}[1]%
 {\\makebox[\\cellwidth]{\\hfill\\large\\bf#1\\hfill}}
 %
 "
   "LaTeX code for a day heading.")
 
-(defvar cal-tex-caldate
+(defconst cal-tex-caldate
 "\\fboxsep=0pt
 \\long\\def\\caldate#1#2#3#4#5#6{%
     \\fbox{\\hbox to\\cellwidth{%
@@ -254,15 +269,15 @@
      (1+ (- d2 d1)))))
 
 (defun cal-tex-preamble (&optional args)
-  "Insert the LaTeX calendar preamble.
+  "Insert the LaTeX calendar preamble into `cal-tex-buffer'.
 Preamble includes initial definitions for various LaTeX commands.
-Optional ARGS are included as article document class options."
+Optional string ARGS are included as options for the article document class."
+  ;; FIXME use generate-new-buffer, and adjust cal-tex-end-document.
   (set-buffer (get-buffer-create cal-tex-buffer))
-  (erase-buffer)
-  (insert "\\documentclass")
-  (if args
-      (insert "[" args "]"))
-  (insert "{article}\n")
+  (insert (format "\\documentclass%s{article}\n"
+                  (if (stringp args)
+                      (format "[%s]" args)
+                    "")))
   (if (stringp cal-tex-preamble-extra)
       (insert cal-tex-preamble-extra "\n"))
   (insert "\\hbadness 20000
@@ -308,9 +323,9 @@
 
 (defun cal-tex-year (year n &optional landscape)
   "Make a one page yearly calendar of YEAR; do this for N years.
-There are four rows of three months each, unless optional LANDSCAPE is t,
-in which case the calendar is printed in landscape mode with three rows of
-four months each."
+There are four rows of three months each, unless optional
+LANDSCAPE is non-nil, in which case the calendar is printed in
+landscape mode with three rows of four months each."
   (cal-tex-insert-preamble 1 landscape "12pt")
   (if landscape
       (cal-tex-vspace "-.6cm")
@@ -360,7 +375,7 @@
     (cal-tex-b-document)
     (cal-tex-cmd "\\vspace*{0.25in}")
     (dotimes (j n)
-      (insert (format "\\hfil {\\Large \\bf %s} \\hfil\\\\\n" year))
+      (insert (format "\\hfil \\textbf{\\Large %s} \\hfil\\\\\n" year))
       (cal-tex-b-center)
       (cal-tex-b-parbox "l" "\\textwidth")
       (insert "\n")
@@ -640,18 +655,19 @@
 ;;; Weekly calendars
 ;;;
 
-(defvar cal-tex-LaTeX-hourbox
+(defconst cal-tex-LaTeX-hourbox
   "\\newcommand{\\hourbox}[2]%
 {\\makebox[2em]{\\rule{0cm}{#2ex}#1}\\rule{3in}{.15mm}}\n"
   "One hour and a line on the right.")
 
 ;; TODO cal-tex-diary-support.
+;; TODO respect cal-tex-daily-start,end (see cal-tex-week-hours).
 (defun cal-tex-cursor-week (&optional arg)
   "Make a LaTeX calendar buffer for a two-page one-week calendar.
 It applies to the week that point is in.  The optional prefix
 argument ARG specifies the number of weeks (default 1).  The calendar
-shows holidays if `cal-tex-holidays' is t (note that diary
-entries are not shown)."
+shows holidays if `cal-tex-holidays' is non-nil (note that diary
+entries are not shown).  The calendar shows the hours 8-12am, 1-5pm."
   (interactive "p")
   (let* ((n (or arg 1))
          (date (calendar-gregorian-from-absolute
@@ -697,12 +713,13 @@
     (run-hooks 'cal-tex-hook)))
 
 ;; TODO cal-tex-diary support.
+;; TODO respect cal-tex-daily-start,end (see cal-tex-week-hours).
 (defun cal-tex-cursor-week2 (&optional arg)
   "Make a LaTeX calendar buffer for a two-page one-week calendar.
 It applies to the week that point is in.  Optional prefix
 argument ARG specifies number of weeks (default 1).  The calendar
 shows holidays if `cal-tex-holidays' is non-nil (note that diary
-entries are not shown)."
+entries are not shown).  The calendar shows the hours 8-12am, 1-5pm"
   (interactive "p")
   (let* ((n (or arg 1))
          (date (calendar-gregorian-from-absolute
@@ -780,7 +797,8 @@
   "Make a LaTeX calendar buffer for a one page ISO-style weekly calendar.
 Optional prefix argument ARG specifies number of weeks (default 1).
 The calendar shows holiday and diary entries if
-`cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil."
+`cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil.
+It does not show hours of the day."
   (interactive "p")
   (let* ((n (or arg 1))
          (date (calendar-gregorian-from-absolute
@@ -863,9 +881,12 @@
     (cal-tex-end-document)
     (run-hooks 'cal-tex-hook)))
 
+;; TODO respect cal-tex-daily-start,end?
+;; Using different numbers of hours will probably break some layouts.
 (defun cal-tex-week-hours (date holidays height)
   "Insert hourly entries for DATE with HOLIDAYS, with line height HEIGHT.
-Uses the 24-hour clock if `cal-tex-24' is non-nil."
+Uses the 24-hour clock if `cal-tex-24' is non-nil.  Note that the hours
+shown are hard-coded to 8-12, 13-17."
   (let ((month (extract-calendar-month date))
         (day (extract-calendar-day date))
         (year (extract-calendar-year date))
@@ -902,12 +923,14 @@
     (cal-tex-nl))))
 
 ;; TODO cal-tex-diary support.
+;; TODO respect cal-tex-daily-start,end (see cal-tex-weekly4-box).
 (defun cal-tex-cursor-week-monday (&optional arg)
   "Make a LaTeX calendar buffer for a two-page one-week calendar.
 It applies to the week that point is in, and starts on Monday.
 Optional prefix argument ARG specifies number of weeks (default 1).
 The calendar shows holidays if `cal-tex-holidays' is
-non-nil (note that diary entries are not shown)."
+non-nil (note that diary entries are not shown).   The calendar shows
+the hours 8-12am, 1-5pm."
   (interactive "p")
   (let ((n (or arg 1))
         (date (calendar-gregorian-from-absolute
@@ -939,9 +962,12 @@
     (cal-tex-end-document)
     (run-hooks 'cal-tex-hook)))
 
+;; TODO respect cal-tex-daily-start,end?
+;; Using different numbers of hours will probably break some layouts.
 (defun cal-tex-weekly4-box (date weekend)
   "Make one box for DATE, different if WEEKEND.
-Uses the 24-hour clock if `cal-tex-24' is non-nil."
+Uses the 24-hour clock if `cal-tex-24' is non-nil.  Note that the hours
+shown are hard-coded to 8-12, 13-17."
   (let* ((day (extract-calendar-day date))
          (month (extract-calendar-month date))
          (year (extract-calendar-year date))
@@ -953,14 +979,15 @@
          (dayname1 (cal-tex-LaTeXify-string (calendar-day-name date1))))
     (cal-tex-b-framebox "8cm" "l")
     (cal-tex-b-parbox "b" "7.5cm")
-    (insert (format "{\\Large\\bf %s,} %s/%s/%s\\\\\n" dayname month day year))
+    (insert (format "\\textbf{\\Large %s,} %s/%s/%s\\\\\n"
+                    dayname month day year))
     (cal-tex-rule "0pt" "7.5cm" ".5mm")
     (cal-tex-nl)
     (unless weekend
       (dotimes (i 5)
-        (insert (format "{\\large\\sf %d}\\\\\n" (+ i 8))))
+        (insert (format "\\textsf{\\large %d}\\\\\n" (+ i 8))))
       (dotimes (i 5)
-        (insert (format "{\\large\\sf %d}\\\\\n"
+        (insert (format "\\textsf{\\large %d}\\\\\n"
                         (if cal-tex-24
                             (+ i 13)    ; 13-17 incl
                           (1+ i))))))   ; 1-5 incl
@@ -968,7 +995,7 @@
     (when weekend
       (cal-tex-vspace "1cm")
       (insert "\\ \\vfill")
-      (insert (format "{\\Large\\bf %s,} %s/%s/%s\\\\\n"
+      (insert (format "\\textbf{\\Large %s,} %s/%s/%s\\\\\n"
                       dayname1 month1 day1 year1))
       (cal-tex-rule "0pt" "7.5cm" ".5mm")
       (cal-tex-nl "1.5cm")
@@ -1325,7 +1352,9 @@
 
 (defun cal-tex-cursor-day (&optional arg)
   "Make a buffer with LaTeX commands for the day cursor is on.
-Optional prefix argument ARG specifies number of days."
+Optional prefix argument ARG specifies number of days.  The calendar shows
+the hours between `cal-tex-daily-start' and `cal-tex-daily-end', using
+the 24-hour clock if `cal-tex-24' is non-nil."
   (interactive "p")
   (let ((n (or arg 1))
         (date (calendar-absolute-from-gregorian (calendar-cursor-to-date t))))
@@ -1441,7 +1470,7 @@
                      " "
                      (int-to-string year)
                      "}\\\\[1mm]\n")))
-    (dotimes (i 6)
+    (dotimes (i 7)
       (setq str
             (concat str
                     (cal-tex-LaTeXify-string
@@ -1457,8 +1486,9 @@
     (dotimes (i last)
       (setq str (concat str (int-to-string (1+ i)))
             str (concat str (if (zerop (mod (+ i 1 blank-days) 7))
-                                (unless (= i (1- last))
-                                  "\\\\[0.5mm]\n" "")
+                                (if (= i (1- last))
+                                    ""
+                                  "\\\\[0.5mm]\n")
                               " & "))))
     (setq str (concat str "\n\\end{tabular}\\hfil}\\vfil}}}%\n"))
     str))
@@ -1477,16 +1507,16 @@
   "Return string with concatenated, LaTeX-ified entries in DATE-LIST for DATE.
 Use double backslash as a separator unless optional SEPARATOR is given.
 If resulting string is not empty, put separator at end if optional
-FINAL-SEPARATOR is t."
+FINAL-SEPARATOR is non-nil."
   (or separator (setq separator "\\\\"))
-  (let ((result
-         (mapconcat (lambda (x) (cal-tex-LaTeXify-string x))
                     (let (result)
+    (setq result
+          (mapconcat (lambda (x) (cal-tex-LaTeXify-string x))
                       (dolist (d date-list (reverse result))
                         (and (car d)
                              (calendar-date-equal date (car d))
-                             (setq result (cons (cadr d) result)))))
-                    separator)))
+                            (setq result (cons (cadr d) result))))
+                     separator))
     (if (and final-separator
              (not (string-equal result "")))
         (concat result separator)
@@ -1518,18 +1548,19 @@
   (latex-mode)
   (pop-to-buffer cal-tex-buffer)
   (goto-char (point-min))
-  (cal-tex-comment "       This buffer was produced by cal-tex.el.")
-  (cal-tex-comment "       To print a calendar, type")
-  (cal-tex-comment "          M-x tex-buffer RET")
-  (cal-tex-comment "          M-x tex-print  RET")
-  (goto-char (point-min)))
+  ;; FIXME auctex equivalents?
+  (cal-tex-comment
+   (format "\tThis buffer was produced by cal-tex.el.
+\tTo print a calendar, type
+\t\tM-x tex-buffer RET
+\t\tM-x tex-print  RET")))
 
 (defun cal-tex-insert-preamble (weeks landscape size &optional append)
-  "Initialize the output buffer.
-Select the output buffer, and insert the preamble for a calendar of
-WEEKS weeks.  Insert code for landscape mode if LANDSCAPE is true.
-Use pointsize SIZE.  Optional argument APPEND, if t, means add to end of
-without erasing current contents."
+  "Initialize the output LaTeX calendar buffer, `cal-tex-buffer'.
+Select the output buffer, and insert the preamble for a calendar
+of WEEKS weeks.  Insert code for landscape mode if LANDSCAPE is
+non-nil.  Use pointsize SIZE.  Optional argument APPEND, if
+non-nil, means add to end of buffer without erasing current contents."
   (let ((width "18cm")
         (height "24cm"))
     (when landscape
@@ -1559,7 +1590,7 @@
     (cal-tex-cmd "\\ \\par")
     (cal-tex-vspace "-3cm")))
 
-(defvar cal-tex-LaTeX-subst-list
+(defconst cal-tex-LaTeX-subst-list
   '(("\"". "``")
     ("\"". "''")        ; quote changes meaning when list is reversed
     ;; Don't think this is necessary, and in any case, does not work:
@@ -1575,7 +1606,7 @@
     ("<" . "$<$")
     (">" . "$>$")
     ("\n" . "\\ \\\\")) ; \\ needed for e.g \begin{center}\n AA\end{center}
-  "List of symbols and their LaTeX replacements.")
+  "Alist of symbols and their LaTeX replacements.")
 
 (defun cal-tex-LaTeXify-string (string)
   "Protect special characters in STRING from LaTeX."
@@ -1585,11 +1616,11 @@
           (tail string)
           (list cal-tex-LaTeX-subst-list))
       (while (not (string-equal tail ""))
-        (let* ((ch (substring tail 0 1))
+        (let* ((ch (substring-no-properties tail 0 1))
                (pair (assoc ch list)))
           (if (and pair (string-equal ch "\""))
               (setq list (reverse list))) ; quote changes meaning each time
-          (setq tail (substring tail 1)
+          (setq tail (substring-no-properties tail 1)
                 head (concat head (if pair (cdr pair) ch)))))
       head)))
 
@@ -1620,33 +1651,29 @@
   (cal-tex-comment))
 
 (defun cal-tex-comment (&optional comment)
-  "Insert % at end of line, include COMMENT if present, and move to next line."
-  (insert "% ")
+  "Insert `% ', followed by optional string COMMENT, followed by newline.
+COMMENT may contain newlines, which are prefixed by `% ' in the output."
+  (insert (format "%% %s\n"
   (if comment
-      (insert comment))
-  (insert "\n"))
+                      (replace-regexp-in-string "\n" "\n% " comment)
+                    ""))))
 
 (defun cal-tex-banner (comment)
-  "Insert the COMMENT separated by blank lines."
-  (cal-tex-comment)
-  (cal-tex-comment)
-  (cal-tex-comment (concat "\t\t\t" comment))
-  (cal-tex-comment))
-
+  "Insert string COMMENT, separated by blank lines."
+  (cal-tex-comment (format "\n\n\n\t\t\t%s\n" comment)))
 
 (defun cal-tex-nl (&optional skip comment)
   "End a line with \\.  If SKIP, then add that much spacing.
-Add COMMENT if present."
-  (insert "\\\\")
+Add trailing COMMENT if present."
+  (insert (format "\\\\%s"
   (if skip
-      (insert "[" skip "]"))
+                      (format "[%s]" skip)
+                    "")))
   (cal-tex-comment comment))
 
 (defun cal-tex-arg (&optional text)
-  "Insert optional TEXT surrounded by braces."
-  (insert "{")
-  (if text (insert text))
-  (insert "}"))
+  "Insert a brace {} pair containing the optional string TEXT."
+  (insert (format "{%s}" (or text ""))))
 
 (defun cal-tex-cmd (cmd &optional arg)
   "Insert LaTeX CMD, with optional argument ARG, and end with %."
@@ -1739,25 +1766,26 @@
   (insert "{\\scriptsize " string "}"))
 
 (defun cal-tex-huge (string)
-  "Insert STRING in huge size."
+  "Insert STRING in huge font."
   (insert "{\\huge " string "}"))
 
 (defun cal-tex-Huge (string)
-  "Insert STRING in Huge size."
+  "Insert STRING in Huge font."
   (insert "{\\Huge " string "}"))
 
 (defun cal-tex-Huge-bf (string)
-  "Insert STRING in Huge bf size."
+  "Insert STRING in Huge bf font."
   (insert "\\textbf{\\Huge " string "}"))
 
 (defun cal-tex-large (string)
-  "Insert STRING in large size."
+  "Insert STRING in large font."
   (insert "{\\large " string "}"))
 
 (defun cal-tex-large-bf (string)
-  "Insert STRING in large bf size."
+  "Insert STRING in large bf font."
   (insert "\\textbf{\\large " string "}"))
 
+
 (provide 'cal-tex)
 
 ;;; arch-tag: ca8168a4-5a00-4508-a565-17e3bccce6d0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]