GNU bug report logs - #42209
12.2.4; Text propogated wrong in TeX-fold-mode

Previous Next

Package: auctex;

Reported by: <gennady.uraltsev <at> gmail.com>

Date: Sun, 5 Jul 2020 00:40:02 UTC

Severity: normal

Found in version 12.2.4

To reply to this bug, email your comments to 42209 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-auctex <at> gnu.org:
bug#42209; Package auctex. (Sun, 05 Jul 2020 00:40:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to <gennady.uraltsev <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-auctex <at> gnu.org. (Sun, 05 Jul 2020 00:40:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: <gennady.uraltsev <at> gmail.com>
To: <bug-auctex <at> gnu.org>
Subject: 12.2.4; Text propogated wrong in TeX-fold-mode
Date: Sat, 4 Jul 2020 20:39:26 -0400
[Message part 1 (text/plain, inline)]
Dear Everyone,

 

I have recently discovered TeX-fold-mode and tried to set it. Before I used
prettify-symbols-mode.

 

There seem to be a problem with propagating text properties when folding.
There seem to be two wrong behaviors (related or unrelated?). 

 

1.	When folding a macro that includes its text arguments when the
arguments are fontified the fontification gets propagated incorrectly. I
think it gets applied twice, that is wrong when the fontification is not
idempotent e.g. relative size specification
2.	In math mode (maybe not only) all macros (math and non-math) when
folded completely disregard fontification. This looks really bad if you have
a subscript of, say, a sum or an integral and there you have a macro. The
folded version is of the wrong size.

 

I illustrate with examples

 

Consider the following LaTeX file (attached as main.tex):

 

\documentclass{amsart}

\begin{document}

\title{Simple AMSart}

\author{Author McAuthorface}

 

\maketitle

 

\section{Section \textit{a} : a \LaTeX macro}

\begin{equation*}

  \int_{\alpha + \beta = \LaTeX + \dots }

\end{equation*}

\end{document}

 

With the  following configuration of auctex (a complete init.el is attached)

(setq TeX-parse-self t)

(require 'tex)

(add-hook 'LaTeX-mode-hook (lambda ()

                             (TeX-fold-mode 1)))

 

1.	The default fontification makes "Section :" slightly larger than
normal. This is correct. 

*	The macro \LaTeX gets folded to look like the surrounding text in
the title: CORRECT
*	The macro \textit{a} folds into an "a" as specified by
TeX-fold-macro-spec-list (value included below) but it gets rendered much
larger than the surrounding text
*	I believe because the "enlargement" gets applied twice, but I am not
sure. 

 

2.	Auctex makes the subscript of the integral in the equation small and
lowered.

*	After folding the Greek symbols and the other macros they appear to
be the same size as "normal" text so they do not inherit the surrounding
fontification. 

 

 

Thanks!

 

Gennady

 

 

Emacs  : GNU Emacs 26.3 (build 1, x86_64-w64-mingw32)

of 2019-12-25

Package: 12.2.4

 

current state:

==============

(setq

AUCTeX-date "2020-06-29"

window-system 'w32

LaTeX-version "2e"

TeX-style-path '("~/.emacs.d/auctex"

 
"c:/Users/guraltsev/.config/emacsen/clean/straight/build/auctex/style"
"c:/Users/guraltsev/.config/emacsen/clean/auctex/auto"
"c:/Users/guraltsev/.config/emacsen/clean/auctex/style" "auto" "style")

TeX-auto-save nil

TeX-parse-self t

TeX-master t

TeX-command-list '(("TeX"

                                  "%(PDF)%(tex) %(file-line-error)
%`%(extraopts) %S%(PDFout)%(mode)%' %t"

                                  TeX-run-TeX nil

                                  (plain-tex-mode ams-tex-mode texinfo-mode)
:help

                                  "Run plain TeX")

                                 ("LaTeX" "%`%l%(mode)%' %T" TeX-run-TeX nil

                                  (latex-mode doctex-mode) :help "Run
LaTeX")

                                 ("Makeinfo" "makeinfo %(extraopts) %t"
TeX-run-compile nil

                                  (texinfo-mode) :help "Run Makeinfo with
Info output")

                                 ("Makeinfo HTML" "makeinfo %(extraopts)
--html %t"

                                  TeX-run-compile nil (texinfo-mode) :help

                                  "Run Makeinfo with HTML output")

                                 ("AmSTeX" "amstex %(PDFout) %`%(extraopts)
%S%(mode)%' %t"

                                  TeX-run-TeX nil (ams-tex-mode) :help "Run
AMSTeX")

                                 ("ConTeXt"

                                  "%(cntxcom) --once --texutil %(extraopts)
%(execopts)%t"

                                  TeX-run-TeX nil (context-mode) :help "Run
ConTeXt once")

                                 ("ConTeXt Full" "%(cntxcom) %(extraopts)
%(execopts)%t"

                                  TeX-run-TeX nil (context-mode) :help

                                  "Run ConTeXt until completion")

                                 ("BibTeX" "%(bibtex) %s" TeX-run-BibTeX nil

                                  (plain-tex-mode latex-mode doctex-mode
ams-tex-mode

                                   texinfo-mode context-mode)

                                  :help "Run BibTeX")

                                 ("Biber" "biber %s" TeX-run-Biber nil

                                  (plain-tex-mode latex-mode doctex-mode
ams-tex-mode

                                   texinfo-mode)

                                  :help "Run Biber")

                                 ("View" "%V" TeX-run-discard-or-function t
t :help

                                  "Run Viewer")

                                 ("Print" "%p" TeX-run-command t t :help
"Print the file")

                                 ("Queue" "%q" TeX-run-background nil t
:help

                                  "View the printer queue" :visible
TeX-queue-command)

                                 ("File" "%(o?)dvips %d -o %f "
TeX-run-dvips t

                                  (plain-tex-mode latex-mode doctex-mode
ams-tex-mode

                                   texinfo-mode)

                                  :help "Generate PostScript file")

                                 ("Dvips" "%(o?)dvips %d -o %f "
TeX-run-dvips nil

                                  (plain-tex-mode latex-mode doctex-mode
ams-tex-mode

                                   texinfo-mode)

                                  :help "Convert DVI file to PostScript")

                                 ("Dvipdfmx" "dvipdfmx %d" TeX-run-dvipdfmx
nil

                                  (plain-tex-mode latex-mode doctex-mode
ams-tex-mode

                                   texinfo-mode)

                                  :help "Convert DVI file to PDF with
dvipdfmx")

                                 ("Ps2pdf" "ps2pdf %f" TeX-run-ps2pdf nil

                                  (plain-tex-mode latex-mode doctex-mode
ams-tex-mode

                                   texinfo-mode)

                                  :help "Convert PostScript file to PDF")

                                 ("Glossaries" "makeglossaries %s"
TeX-run-command nil

                                  (plain-tex-mode latex-mode doctex-mode
ams-tex-mode

                                   texinfo-mode)

                                  :help "Run makeglossaries to create
glossary\n     file")

                                 ("Index" "%(makeindex) %s" TeX-run-index
nil

                                  (plain-tex-mode latex-mode doctex-mode
ams-tex-mode

                                   texinfo-mode)

                                  :help "Run makeindex to create index
file")

                                 ("upMendex" "upmendex %s" TeX-run-index t

                                  (plain-tex-mode latex-mode doctex-mode
ams-tex-mode

                                   texinfo-mode)

                                  :help "Run upmendex to create index file")

                                 ("Xindy" "texindy %s" TeX-run-command nil

                                  (plain-tex-mode latex-mode doctex-mode
ams-tex-mode

                                   texinfo-mode)

                                  :help "Run xindy to create index file")

                                 ("Check" "lacheck %s" TeX-run-compile nil
(latex-mode)

                                  :help "Check LaTeX file for correctness")

                                 ("ChkTeX" "chktex -v6 %s" TeX-run-compile
nil (latex-mode)

                                  :help "Check LaTeX file for common
mistakes")

                                 ("Spell" "(TeX-ispell-document \"\")"
TeX-run-function nil

                                  t :help "Spell-check the document")

                                 ("Clean" "TeX-clean" TeX-run-function nil t
:help

                                  "Delete generated intermediate files")

                                 ("Clean All" "(TeX-clean t)"
TeX-run-function nil t :help

                                  "Delete generated intermediate and output
files")

                                 ("Other" "" TeX-run-command t t :help

                                  "Run an arbitrary command")

                                 )

TeX-fold-macro-spec-list  ' (("[f]"

  ("footnote" "marginpar"))

("[c]"

  ("cite"))

("[l]"

  ("label"))

("[r]"

  ("ref" "pageref" "eqref"))

("[i]"

  ("index" "glossary"))

("[1]:||*"

  ("item"))

("..."

  ("dots"))

("(C)"

  ("copyright"))

("(R)"

  ("textregistered"))

("TM"

  ("texttrademark"))

(1

  ("part" "chapter" "section" "subsection" "subsubsection" "paragraph"
"subparagraph" "part*" "chapter*" "section*" "subsection*" "subsubsection*"
"paragraph*" "subparagraph*" "emph" "textit" "textsl" "textmd" "textrm"
"textsf" "texttt" "textbf" "textsc" "textup"))) 

)

[Message part 2 (text/html, inline)]
[init.el (application/octet-stream, attachment)]
[screenshot.PNG (image/png, attachment)]
[main.tex (application/octet-stream, attachment)]

Information forwarded to bug-auctex <at> gnu.org:
bug#42209; Package auctex. (Sun, 23 Aug 2020 10:09:01 GMT) Full text and rfc822 format available.

Message #8 received at 42209 <at> debbugs.gnu.org (full text, mbox):

From: Ikumi Keita <ikumi <at> ikumi.que.jp>
To: gennady.uraltsev <at> gmail.com
Cc: 42209 <at> debbugs.gnu.org
Subject: Re: bug#42209: 12.2.4; Text propogated wrong in TeX-fold-mode
Date: Sun, 23 Aug 2020 19:08:19 +0900
[Message part 1 (text/plain, inline)]
Hi Gennady, sorry for very late response.

>>>>> <gennady.uraltsev <at> gmail.com> writes:

> I illustrate with examples

> Consider the following LaTeX file (attached as main.tex):

> \documentclass{amsart}
> \begin{document}
> \title{Simple AMSart}
> \author{Author McAuthorface}

> \maketitle

> \section{Section \textit{a} : a \LaTeX macro}
> \begin{equation*}
>   \int_{\alpha + \beta = \LaTeX + \dots }
> \end{equation*}
> \end{document}

> 1.	
> *	The macro \textit{a} folds into an "a" as specified by
> TeX-fold-macro-spec-list (value included below) but it gets rendered much
> larger than the surrounding text
> *	I believe because the "enlargement" gets applied twice, but I am not
> sure. 

I tried just enabling TeX-fold-mode without your whole init setting, and
the problem doesn't reproduce with the provided sample latex file.

> 2.	Auctex makes the subscript of the integral in the equation small and
> lowered.

> *	After folding the Greek symbols and the other macros they appear to
> be the same size as "normal" text so they do not inherit the surrounding
> fontification. 

I can observe this behavior. It seems that the attached patch fixes the
problem. Could you test whether it works for you or not?

Regards,
Ikumi Keita

[patch (text/x-diff, inline)]
diff --git a/tex-fold.el b/tex-fold.el
index b14ec734..802d1be0 100644
--- a/tex-fold.el
+++ b/tex-fold.el
@@ -824,6 +824,11 @@ That means, put respective properties onto overlay OV."
 				    (skip-chars-forward " \t")
 				    (point))))
       (overlay-put ov 'mouse-face 'highlight)
+      (when font-lock-mode
+	;; Add raise adjustment for superscript and subscript.
+	(put-text-property 0 (length display-string)
+			   'display (get-text-property ov-start 'display)
+			   display-string))
       (overlay-put ov 'display display-string)
       (when font-lock-mode
 	(overlay-put ov 'face TeX-fold-folded-face))

Information forwarded to bug-auctex <at> gnu.org:
bug#42209; Package auctex. (Mon, 07 Jun 2021 07:36:02 GMT) Full text and rfc822 format available.

Message #11 received at 42209 <at> debbugs.gnu.org (full text, mbox):

From: Ikumi Keita <ikumi <at> ikumi.que.jp>
Cc: 42209 <at> debbugs.gnu.org, gennady.uraltsev <at> gmail.com
Subject: Re: bug#42209: 12.2.4; Text propogated wrong in TeX-fold-mode
Date: Mon, 07 Jun 2021 16:35:22 +0900
Hi Gennady,

>>>>> Ikumi Keita <ikumi <at> ikumi.que.jp> writes:
>>>>> <gennady.uraltsev <at> gmail.com> writes:
>> 2.	Auctex makes the subscript of the integral in the equation small and
>> lowered.

>> *	After folding the Greek symbols and the other macros they appear to
>> be the same size as "normal" text so they do not inherit the surrounding
>> fontification. 

> I can observe this behavior. It seems that the attached patch fixes the
> problem. Could you test whether it works for you or not?

I pushed this change into the git repo, so I expect this issue is fixed.

>> I illustrate with examples

>> Consider the following LaTeX file (attached as main.tex):

>> \documentclass{amsart}
>> \begin{document}
>> \title{Simple AMSart}
>> \author{Author McAuthorface}

>> \maketitle

>> \section{Section \textit{a} : a \LaTeX macro}
>> \begin{equation*}
>> \int_{\alpha + \beta = \LaTeX + \dots }
>> \end{equation*}
>> \end{document}

>> 1.	
>> *	The macro \textit{a} folds into an "a" as specified by
>> TeX-fold-macro-spec-list (value included below) but it gets rendered much
>> larger than the surrounding text
>> *	I believe because the "enlargement" gets applied twice, but I am not
>> sure. 

> I tried just enabling TeX-fold-mode without your whole init setting, and
> the problem doesn't reproduce with the provided sample latex file.

I at last succeeded to reproduce this issue. It turned out that C-c C-o
C-b doesn't reproduce it, but C-c C-o C-m on the \textit does. It seems
that it results from complex interactions within emacs display engine,
and not easy to fix. Maybe I look into this again some day.

Regards,
Ikumi Keita




This bug report was last modified 3 years and 170 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.