\Hy@DisableOption in \PDF@FinishDoc is local, hence do nothing
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 38/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- latex, tex
- Ambito
- tooling
Direzione di ricerca
Traccia \PDF@FinishDoc, \Hy@DisableOption e le definizioni delle chiavi di keyval e atbegshi per identificare dove l’ambito locale impedisce la sostituzione del gestore delle opzioni. Usa il documento minimo nell’issue per confrontare \KV@Hyp@pdftitle prima e dopo il primo salto di pagina; il lavoro è completato quando il gestore è disabilitato globalmente e successivamente viene attivato \Hy@WarnOptionDisabled.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Currently, hyperref, at the time of first page break, uses \PDF@FinishDoc to set PDF info fields like pdftitle and make related options disable. After that, any key-val setting to options like pdftitle will not influence the corresponding field in the output PDF, and should raise warning \Hy@WarnOptionDisabled.
But, since
- the
\PDF@FinishDocis executed inside commands ofatbegshipackage, and - the
\define@key(provided bykeyvalpackage) used by\Hy@DisableOptiononly locally (re)defines key,
options like pdftitle are never disabled, hence usages after first page break won't raise any warning.
Following is a quick fix (with test by showing the meaning of \KV@Hyp@pdftitle) by providing global variant of \define@key and using it inside \PDF@FinishDoc.
- Without fix,
\KV@Hyp@pdftitleis not redefined after the first page break. - With the fix,
\KV@Hyp@pdftitleis redefined as desired and warning\Hy@WarnOptionDisabledis raised after the first page break.
\documentclass{article}
\usepackage{hyperref}
\hypersetup{pdftitle={preamble}}
\makeatletter
%% redifined to use \define@key@g
\def\Hy@DisableOption#1{%
\ltx@ifundefined{KV@Hyp@#1@default}{%
\define@key@g{Hyp}{#1}%
}{%
\define@key@g{Hyp}{#1}[]%
}%
{\Hy@WarnOptionDisabled{#1}}%
}
%% add \global version of \defin@key
\def\define@key@g#1#2{%
\@ifnextchar[{\KV@def@g{#1}{#2}}{\global\long\@namedef{KV@#1@#2}####1}}
%% add \global version of \KV@def
\def\KV@def@g#1#2[#3]{%
\global\long\@namedef{KV@#1@#2@default\expandafter}\expandafter
{\csname KV@#1@#2\endcsname{#3}}%
\global\long\@namedef{KV@#1@#2}##1}
\makeatother
\listfiles
\begin{document}
%% this one succeeds in changing the Title field
\hypersetup{pdftitle={before first newpage}}
a
\newpage
%% with fix, this one raises warning
\hypersetup{pdftitle={after first newpage}}
%% check meaing of \KV@Hyp@pdftitle
\makeatletter
\ttfamily
\meaning\KV@Hyp@pdftitle
\makeatother
\end{document}
This issue is first reported, in Chinese, in https://github.com/CTeX-org/forum/issues/42.
- Lingua principale
- TeX
- Stelle
- 207
- Fork
- 41
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di latex3/hyperref
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 44/100
Tutte le issue di latex3/hyperref
Issue simili
-
freshness freshness:observed-only
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
thoroc/context-radar#282 ·
-
maintenance
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
stage-fail
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
siyuan-note/bazaar#2405 ·
I maintainer di solito rispondono entro 1 giorno
-
bug good first issue hacktoberfest
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
codercops/discord-bot#101 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
projectbluefin/documentation#1603 ·
I maintainer di solito rispondono entro 1 giorno