Package: latexdiff
Version: 1.3.2-1
Severity: normal
Tags: upstream
X-Debbugs-Cc: tilm...@gfz-potsdam.de, debbug.latexd...@sideload.33mail.com

Text inside the \colchunk command (which is used inside a parcolumns
environment) escapes the diffing algorithm. Text that is inside a
parcolumns environment but not in a colchunk is treated correctly. But
\colchunk is essential to the core functionality of parcolumns. A
minimal working example is attached.

-- System Information:
Debian Release: 12.5
  APT prefers stable-updates
  APT policy: (990, 'stable-updates'), (990, 'stable-security'), (990, 
'stable'), (500, 'oldstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 5.10.0-28-amd64 (SMP w/2 CPU threads)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages latexdiff depends on:
ii  perl  5.36.0-7+deb12u1

Versions of packages latexdiff recommends:
ii  texlive-latex-base         2022.20230122-3
ii  texlive-latex-extra        2022.20230122-4
ii  texlive-latex-recommended  2022.20230122-3
ii  texlive-plain-generic      2022.20230122-4

Versions of packages latexdiff suggests:
ii  git  1:2.39.2-1.1

-- no debconf information
\documentclass{minimal}

\usepackage[UKenglish,dutch]{babel}
\usepackage{parcolumns}

\newcommand{\bilingual}[2]{%
  \colchunk{\selectlanguage{dutch}#1}%
  \colchunk{\selectlanguage{UKenglish}#2}%
  \colplacechunks%
}

\begin{document}

This minimal sample document demonstrates a latexdiff defect whereby
text inside a parcolumns environment escapes the diffing
algorithm. The next paragraph from the GDPR is printed in a two column
format. Words are added to the left side (Dutch) but latexdiff does
not notice.\\

\centerline{\textbf{broken diff:}}

\begin{parcolumns}[nofirstindent]{2}
  \bilingual{%
    De betrokkene heeft het recht niet te worden onderworpen aan een
    uitsluitend op geautomatiseerde verwerking, waaronder profilering,
    gebaseerd besluit waaraan voor hem rechtsgevolgen
    zijn verbonden of dat hem anderszins in
    aanmerkelijke mate treft.\\
  }{%
    The data subject shall have the right not to be subject to a
    decision based solely on automated processing, including
    profiling, which produces legal effects concerning him or her or
    similarly significantly affects him or her.\\
  }

  The new version of text prevails, but it has no markups. Below is
  the same text laid out inside adjecent minipages instead,
  which shows latexdiff working as expected.\\
\end{parcolumns}

\centerline{\textbf{working diff:}}

\noindent\begin{minipage}[t]{0.49\textwidth}\selectlanguage{dutch}
  De betrokkene heeft het recht niet te worden onderworpen aan een
  uitsluitend op geautomatiseerde verwerking, waaronder profilering,
  gebaseerd besluit waaraan voor hem rechtsgevolgen
  zijn verbonden of dat hem anderszins in aanmerkelijke
  mate treft.%
\end{minipage}\hfill%
\noindent\begin{minipage}[t]{0.47\textwidth}\selectlanguage{UKenglish}
  The data subject shall have the right not to be subject to a
  decision based solely on automated processing, including profiling,
  which produces legal effects concerning him or her or similarly
  significantly affects him or her.%
\end{minipage}%

\end{document}
\documentclass{minimal}

\usepackage[UKenglish,dutch]{babel}
\usepackage{parcolumns}

\newcommand{\bilingual}[2]{%
  \colchunk{\selectlanguage{dutch}#1}%
  \colchunk{\selectlanguage{UKenglish}#2}%
  \colplacechunks%
}

\begin{document}

This minimal sample document demonstrates a latexdiff defect whereby
text inside a colchunk environment escapes the diffing algorithm. The
next paragraph from the GDPR is printed in a two column format. Words
are added to the left side (Dutch) but latexdiff does
not notice.\\

\centerline{\textbf{broken diff:}}

\begin{parcolumns}[nofirstindent]{2}
  \bilingual{%
    De betrokkene heeft het recht niet te worden onderworpen aan een
    uitsluitend op geautomatiseerde verwerking, waaronder profilering,
    gebaseerd besluit waaraan voor hem of haar rechtsgevolgen
    zijn verbonden of dat hem of haar anderszins in
    aanmerkelijke mate treft.\\
  }{%
    The data subject shall have the right not to be subject to a
    decision based solely on automated processing, including
    profiling, which produces legal effects concerning him or her or
    similarly significantly affects him or her.\\
  }

  The new version of text prevails, but there are no markups. Below is
  the same text laid out inside adjecent minipages instead,
  which shows latexdiff working as expected.\\
\end{parcolumns}

\centerline{\textbf{working diff:}}

\noindent\begin{minipage}[t]{0.49\textwidth}\selectlanguage{dutch}
  De betrokkene heeft het recht niet te worden onderworpen aan een
  uitsluitend op geautomatiseerde verwerking, waaronder profilering,
  gebaseerd besluit waaraan voor hem of haar rechtsgevolgen
  zijn verbonden of dat hem of haar anderszins in aanmerkelijke
  mate treft.%
\end{minipage}\hfill%
\noindent\begin{minipage}[t]{0.47\textwidth}\selectlanguage{UKenglish}
  The data subject shall have the right not to be subject to a
  decision based solely on automated processing, including profiling,
  which produces legal effects concerning him or her or similarly
  significantly affects him or her.%
\end{minipage}%

\end{document}

Reply via email to