gnucash-docs stable: Multiple changes pushed

John Ralls jralls at code.gnucash.org
Mon Jul 13 15:27:41 EDT 2026


Updated	 via  https://github.com/Gnucash/gnucash-docs/commit/23fac47b (commit)
	 via  https://github.com/Gnucash/gnucash-docs/commit/7a678f51 (commit)
	from  https://github.com/Gnucash/gnucash-docs/commit/a58f731a (commit)



commit 23fac47b020106e4459cbee51d1b108cc70b67af
Merge: a58f731a 7a678f51
Author: John Ralls <jralls at ceridwen.us>
Date:   Mon Jul 13 12:27:09 2026 -0700

    Merge Chris Good's 'import-match-append' into stable


commit 7a678f5155021746c038b69b97cd94d2b489026a
Author: John Ralls <jralls at ceridwen.us>
Date:   Mon Jul 13 12:15:58 2026 -0700

    Update adjust-dpi.sh so rerun does nothing
    Slight rounding issues previously meant some files were updated but
    not actually changed. Increase the no of decimals in the existing and
    future pixels per centimeter from 1 to 2 and check for a difference of
    more than 0.02 pixels per centimeter before running convert on a file.
    
    Included in this commit are images that have not been previously
    updated by adjust-dpi.sh.

diff --git a/C/guide/ch_reports.docbook b/C/guide/ch_reports.docbook
index ee3b893b..e0b7c664 100644
--- a/C/guide/ch_reports.docbook
+++ b/C/guide/ch_reports.docbook
@@ -331,17 +331,18 @@
           <title>The Investment Lots Report</title>
 
           <screenshot id="InvestmentLotsScreenShot">
-            <screeninfo>1720x982</screeninfo>
+            <screeninfo>1024x469</screeninfo>
 
             <mediaobject>
               <imageobject role="html">
                 <imagedata fileref="figures/Report_Investment_Lots.png"
-                            srccredit="Brent McBride" width="&img-w;"/>
+                            srccredit="Brent McBride" width="1024"/>
               </imageobject>
 
               <imageobject role="fo">
                 <imagedata fileref="figures/Report_Investment_Lots.png"
-                            srccredit="Brent McBride"/>
+                            srccredit="Brent McBride"
+                            width="160mm" align="center"/>
               </imageobject>
             </mediaobject>
           </screenshot>
@@ -351,8 +352,8 @@
           <emphasis>Stock</emphasis> or <emphasis>Mutual Fund</emphasis> (see
           <xref linkend="invest-sellLots" />). It includes an optional capital gains summary chart
           and a table with columns for dates, purchases, sales, end balances, capital gains
-          (realized and unrealized, short term and long term), and return on investment (ROI). It
-          also performs optional lot validation checks.
+          (realized and unrealized, short term and long term), return on investment (ROI), and
+          compound annual growth rate (CAGR). It also performs optional lot validation checks.
         </para>
 
         <para>The report can help answer questions such as:
diff --git a/C/guide/figures/Report_Investment_Lots.png b/C/guide/figures/Report_Investment_Lots.png
index 8cc3218e..8a375b9f 100644
Binary files a/C/guide/figures/Report_Investment_Lots.png and b/C/guide/figures/Report_Investment_Lots.png differ
diff --git a/C/manual/ch_Reports.docbook b/C/manual/ch_Reports.docbook
index 18d3494c..8f109eab 100644
--- a/C/manual/ch_Reports.docbook
+++ b/C/manual/ch_Reports.docbook
@@ -2102,17 +2102,18 @@ Income (type INCOME)
             <title>The Investment Lots Report</title>
 
             <screenshot id="InvestmentLotsScreenShot">
-              <screeninfo>1720x982</screeninfo>
+              <screeninfo>1024x469</screeninfo>
 
               <mediaobject>
                 <imageobject role="html">
                   <imagedata fileref="figures/Report_Investment_Lots.png"
-                             srccredit="Brent McBride" width="&img-w;"/>
+                             srccredit="Brent McBride" width="1024"/>
                 </imageobject>
 
                 <imageobject role="fo">
                   <imagedata fileref="figures/Report_Investment_Lots.png"
-                             srccredit="Brent McBride"/>
+                             srccredit="Brent McBride"
+                             width="160mm" align="center"/>
                 </imageobject>
               </mediaobject>
             </screenshot>
@@ -2129,7 +2130,8 @@ Income (type INCOME)
               <link linkend="investment-lots-report-column-e">end balances</link>, capital gains
               (<link linkend="investment-lots-report-column-r">realized</link> and
               <link linkend="investment-lots-report-column-r">unrealized</link>, short term and long
-              term), and return on investment (ROI). It also performs optional lot
+              term), return on investment (ROI), and compound annual growth rate (CAGR). It also
+              performs optional lot
               <link linkend="investment-lots-report-options-val">validation checks</link>.
             </para>
           </abstract>
@@ -2353,11 +2355,36 @@ Income (type INCOME)
                 </listitem>
 
                 <listitem id="investment-lots-report-column-rr">
-                  <para><guilabel>Realized ROI</guilabel>: The realized return on investment.
+                  <para><guilabel>Realized ROI</guilabel>: The realized return on investment: the
                     <link linkend="investment-lots-report-column-rg"><guilabel>Realized
-                    Gain</guilabel></link> divided by
+                    Gain</guilabel></link> as a fraction of the amount originally invested in the
+                    sold shares. Expressed as a percentage:
+                  </para>
+
+                  <informalequation>
+                    <mathphrase>Realized ROI = Realized Gain / Sold Basis = (Sold Value − Sold Basis) / Sold Basis</mathphrase>
+                  </informalequation>
+                </listitem>
+
+                <listitem id="investment-lots-report-column-rc">
+                  <para><guilabel>Realized CAGR</guilabel>: The compound annual growth rate realized on sold shares. Whereas
+                    <link linkend="investment-lots-report-column-rr"><guilabel>Realized
+                    ROI</guilabel></link> measures the total return regardless of how long the
+                    shares were held, <guilabel>Realized CAGR</guilabel> annualizes that return: it
+                    is the constant yearly rate at which the
                     <link linkend="investment-lots-report-column-sb"><guilabel>Sold
-                    Basis</guilabel></link>, as a percentage.
+                    Basis</guilabel></link> would have had to grow, compounding each year, to reach
+                    the <link linkend="investment-lots-report-column-sv"><guilabel>Sold
+                    Value</guilabel></link> over the holding period. Expressed as a percentage:
+                  </para>
+
+                  <informalequation>
+                    <mathphrase>Realized CAGR = (Sold Value / Sold Basis)<superscript>(1 / years)</superscript> − 1</mathphrase>
+                  </informalequation>
+
+                  <para>where <emphasis>years</emphasis> is the length of time the shares were held before being sold.
+                    Annualizing the return this way lets lots held for different lengths of time be
+                    compared on an equal footing.
                   </para>
                 </listitem>
               </itemizedlist>
@@ -2379,11 +2406,34 @@ Income (type INCOME)
                 </listitem>
 
                 <listitem id="investment-lots-report-column-ur">
-                  <para><guilabel>Unrealized ROI</guilabel>: The unrealized return on investment.
+                  <para><guilabel>Unrealized ROI</guilabel>: The unrealized return on investment: the
                     <link linkend="investment-lots-report-column-ug"><guilabel>Unrealized
-                    Gain</guilabel></link> divided by
+                    Gain</guilabel></link> as a fraction of the amount currently invested in the
+                    remaining shares. Expressed as a percentage:
+                  </para>
+
+                  <informalequation>
+                    <mathphrase>Unrealized ROI = Unrealized Gain / End Basis = (End Value − End Basis) / End Basis</mathphrase>
+                  </informalequation>
+                </listitem>
+
+                <listitem id="investment-lots-report-column-uc">
+                  <para><guilabel>Unrealized CAGR</guilabel>: The compound annual growth rate that would be realized if the
+                    remaining shares were sold on the end date. It is the annualized counterpart of
+                    <link linkend="investment-lots-report-column-ur"><guilabel>Unrealized
+                    ROI</guilabel></link>: the constant yearly rate at which the
                     <link linkend="investment-lots-report-column-eb"><guilabel>End
-                    Basis</guilabel></link>, as a percentage.
+                    Basis</guilabel></link> would have had to grow, compounding each year, to reach
+                    the <link linkend="investment-lots-report-column-ev"><guilabel>End
+                    Value</guilabel></link> over the holding period. Expressed as a percentage:
+                  </para>
+
+                  <informalequation>
+                    <mathphrase>Unrealized CAGR = (End Value / End Basis)<superscript>(1 / years)</superscript> − 1</mathphrase>
+                  </informalequation>
+
+                  <para>where <emphasis>years</emphasis> is the length of time the shares have been held as of the end
+                    date.
                   </para>
                 </listitem>
               </itemizedlist>
@@ -2401,6 +2451,18 @@ Income (type INCOME)
             </para>
           </note>
 
+          <note>
+            <para>Unlike the gain and ROI columns, the
+              <link linkend="investment-lots-report-column-rc"><guilabel>Realized
+              CAGR</guilabel></link> and
+              <link linkend="investment-lots-report-column-uc"><guilabel>Unrealized
+              CAGR</guilabel></link> columns are left blank in the <guilabel>Grand Total</guilabel>
+              row. A compound annual growth rate is an annualized rate of return rather than a
+              monetary amount, so it cannot be meaningfully summed or averaged across accounts that
+              hold different commodities.
+            </para>
+          </note>
+
           <para id="investment-lots-report-options">Report Options
           </para>
 
@@ -2492,10 +2554,15 @@ Income (type INCOME)
                       <screeninfo>800x630</screeninfo>
 
                       <mediaobject>
-                        <imageobject>
+                        <imageobject role="html">
                           <imagedata fileref="figures/Report_Investment_Lots_StackedBar.png"
                                     srccredit="Brent McBride"/>
                         </imageobject>
+			<imageobject role="fo">
+			  <imagedata fileref="figures/Report_Investment_Lots_StackedBar.png"
+				     srccredit="Brent McBride"
+				     width="160mm" align="center"/>
+			</imageobject>
                       </mediaobject>
                     </screenshot>
                   </figure>
@@ -2507,10 +2574,15 @@ Income (type INCOME)
                       <screeninfo>800x667</screeninfo>
 
                       <mediaobject>
-                        <imageobject>
+                        <imageobject role="html">
                           <imagedata fileref="figures/Report_Investment_Lots_Bar.png"
                                     srccredit="Brent McBride"/>
                         </imageobject>
+			<imageobject role="fo">
+			  <imagedata fileref="figures/Report_Investment_Lots_Bar.png"
+				     srccredit="Brent McBride"
+				     width="160mm" align="center"/>
+			</imageobject>
                       </mediaobject>
                     </screenshot>
                   </figure>
@@ -2689,6 +2761,34 @@ Income (type INCOME)
                         disabled. Default: 1 year.
                       </para>
                     </listitem>
+
+                    <listitem id="investment-lots-report-options-columns-roi">
+                      <para><guilabel>Show ROI columns</guilabel>: Show the
+                        <link linkend="investment-lots-report-column-rr"><guilabel>Realized
+                        ROI</guilabel></link> and
+                        <link linkend="investment-lots-report-column-ur"><guilabel>Unrealized
+                        ROI</guilabel></link> percentage columns. This option is ignored unless at
+                        least one of the
+                        <link linkend="investment-lots-report-options-columns-r"><guilabel>Show
+                        realized gain columns</guilabel></link> or
+                        <link linkend="investment-lots-report-options-columns-u"><guilabel>Show
+                        unrealized gain columns</guilabel></link> options is enabled. Default: off.
+                      </para>
+                    </listitem>
+
+                    <listitem id="investment-lots-report-options-columns-cagr">
+                      <para><guilabel>Show CAGR columns</guilabel>: Show the
+                        <link linkend="investment-lots-report-column-rc"><guilabel>Realized
+                        CAGR</guilabel></link> and
+                        <link linkend="investment-lots-report-column-uc"><guilabel>Unrealized
+                        CAGR</guilabel></link> percentage columns. This option is ignored unless at
+                        least one of the
+                        <link linkend="investment-lots-report-options-columns-r"><guilabel>Show
+                        realized gain columns</guilabel></link> or
+                        <link linkend="investment-lots-report-options-columns-u"><guilabel>Show
+                        unrealized gain columns</guilabel></link> options is enabled. Default: on.
+                      </para>
+                    </listitem>
                   </itemizedlist>
                 </listitem>
               </itemizedlist>
diff --git a/C/manual/figures/Report_Investment_Lots.png b/C/manual/figures/Report_Investment_Lots.png
index 8cc3218e..8a375b9f 100644
Binary files a/C/manual/figures/Report_Investment_Lots.png and b/C/manual/figures/Report_Investment_Lots.png differ
diff --git a/util/adjust-dpi.sh b/util/adjust-dpi.sh
index 6bd05590..d404952e 100755
--- a/util/adjust-dpi.sh
+++ b/util/adjust-dpi.sh
@@ -4,7 +4,7 @@ ls *.png > list
 
 for figure in $(cat list);
 do
-  # get width in pixels of the figure
+  # get width in pixels of the figure              1 inch = 2,54 centimeters
   width=$(identify -format "%w" "$figure")
   if [ "$width" -lt 496 ]; then
     # width is less than 90x14cm/2,54
@@ -22,19 +22,20 @@ do
     fi
   fi
   # convert dpi from pixelsperinch to pixelspercentimeter
-  #  Note: bc truncates to scale decimals so use awk to round to 1 decimals
-  dpi_cm=$(echo "scale=8; $dpi/2.54" | bc | awk '{ printf("%.1f",$1); }')
+  #  Note: bc truncates to scale decimals so use awk to round to 2 decimals
+  dpi_cm=$(echo "scale=8; $dpi/2.54" | bc | awk '{ printf("%.2f",$1); }')
   # get the existing dpi from figure as XX PixelsPerCentimeter
   existing_dpi=$(identify -format "%x" "$figure")
   # some vers of identify suffix the returned dpi with " PixelsPerCentimeter"
   #  and/or do not round the return value of identify -format "%x"
-  existing_dpi=$( echo "$existing_dpi" | awk '{ printf("%.1f",$1); }')
+  existing_dpi=$( echo "$existing_dpi" | awk '{ printf("%.2f",$1); }')
   # set the future dpi figure to XX.XX (PixelsPerCentimeter)
   future_dpi="$dpi_cm"
-  # apply new dpi only if it's changed from the existing
-  if [ "$existing_dpi" != "$future_dpi" ]; then
+  # apply new dpi only if it's changed from the existing by more than 0.02
+  abs_diffx100=$( echo "scale=4; ($existing_dpi - $future_dpi) * 100" | bc | tr -d - | awk '{ printf("%.0f",$1); }')
+  if [ "$abs_diffx100" -gt 2 ]; then	# really .02
     convert -units PixelsPerInch -density "$dpi" "$figure" "$figure"
-    echo "File $figure converted from $existing_dpi to $dpi dpi"
+    echo "File $figure PixelsPerCentimeter converted from $existing_dpi to $future_dpi (dpi=$dpi)"
   fi
 done
 rm list
diff --git a/zh/guide/figures/currency_AfterGetOnlineQuotes.png b/zh/guide/figures/currency_AfterGetOnlineQuotes.png
index 9aae9de4..12da0369 100644
Binary files a/zh/guide/figures/currency_AfterGetOnlineQuotes.png and b/zh/guide/figures/currency_AfterGetOnlineQuotes.png differ
diff --git a/zh/guide/figures/currency_BeforeGetOnlineQuotes.png b/zh/guide/figures/currency_BeforeGetOnlineQuotes.png
index 93dc270e..42b34d57 100644
Binary files a/zh/guide/figures/currency_BeforeGetOnlineQuotes.png and b/zh/guide/figures/currency_BeforeGetOnlineQuotes.png differ
diff --git a/zh/guide/figures/currency_addcurr.png b/zh/guide/figures/currency_addcurr.png
index 0bcecc4e..796edbb8 100644
Binary files a/zh/guide/figures/currency_addcurr.png and b/zh/guide/figures/currency_addcurr.png differ
diff --git a/zh/guide/figures/currency_main1.png b/zh/guide/figures/currency_main1.png
index 074d9c3b..a1941bad 100644
Binary files a/zh/guide/figures/currency_main1.png and b/zh/guide/figures/currency_main1.png differ
diff --git a/zh/guide/figures/currency_main2.png b/zh/guide/figures/currency_main2.png
index 493ac390..a677d6ab 100644
Binary files a/zh/guide/figures/currency_main2.png and b/zh/guide/figures/currency_main2.png differ
diff --git a/zh/guide/figures/currency_main3.png b/zh/guide/figures/currency_main3.png
index c80fc313..81d8127f 100644
Binary files a/zh/guide/figures/currency_main3.png and b/zh/guide/figures/currency_main3.png differ
diff --git a/zh/guide/figures/currency_peditor.png b/zh/guide/figures/currency_peditor.png
index c7d86349..892ccc12 100644
Binary files a/zh/guide/figures/currency_peditor.png and b/zh/guide/figures/currency_peditor.png differ
diff --git a/zh/guide/figures/currency_trading_Price_Database_initial.png b/zh/guide/figures/currency_trading_Price_Database_initial.png
index f4ccf8fd..210058cc 100644
Binary files a/zh/guide/figures/currency_trading_Price_Database_initial.png and b/zh/guide/figures/currency_trading_Price_Database_initial.png differ
diff --git a/zh/guide/figures/currency_trading_prices_after_trf_back.png b/zh/guide/figures/currency_trading_prices_after_trf_back.png
index cc0b8e66..c5b08493 100644
Binary files a/zh/guide/figures/currency_trading_prices_after_trf_back.png and b/zh/guide/figures/currency_trading_prices_after_trf_back.png differ
diff --git a/zh/guide/figures/currency_trading_transfer_trans1.png b/zh/guide/figures/currency_trading_transfer_trans1.png
index 23936ef5..7010565d 100644
Binary files a/zh/guide/figures/currency_trading_transfer_trans1.png and b/zh/guide/figures/currency_trading_transfer_trans1.png differ
diff --git a/zh/guide/figures/currency_trading_transfer_trans2.png b/zh/guide/figures/currency_trading_transfer_trans2.png
index 69323388..e2d33e90 100644
Binary files a/zh/guide/figures/currency_trading_transfer_trans2.png and b/zh/guide/figures/currency_trading_transfer_trans2.png differ
diff --git a/zh/guide/figures/currency_trading_trf_back.png b/zh/guide/figures/currency_trading_trf_back.png
index 6cc52949..619bd5d2 100644
Binary files a/zh/guide/figures/currency_trading_trf_back.png and b/zh/guide/figures/currency_trading_trf_back.png differ



Summary of changes:
 util/adjust-dpi.sh                                  |  15 ++++++++-------
 zh/guide/figures/currency_AfterGetOnlineQuotes.png  | Bin 48062 -> 45512 bytes
 zh/guide/figures/currency_BeforeGetOnlineQuotes.png | Bin 38338 -> 35978 bytes
 zh/guide/figures/currency_addcurr.png               | Bin 35411 -> 32711 bytes
 zh/guide/figures/currency_main1.png                 | Bin 69994 -> 67107 bytes
 zh/guide/figures/currency_main2.png                 | Bin 70131 -> 67204 bytes
 zh/guide/figures/currency_main3.png                 | Bin 74032 -> 71714 bytes
 zh/guide/figures/currency_peditor.png               | Bin 24004 -> 23284 bytes
 .../currency_trading_Price_Database_initial.png     | Bin 24169 -> 24953 bytes
 .../currency_trading_prices_after_trf_back.png      | Bin 28993 -> 29715 bytes
 .../figures/currency_trading_transfer_trans1.png    | Bin 56718 -> 58083 bytes
 .../figures/currency_trading_transfer_trans2.png    | Bin 63095 -> 64436 bytes
 zh/guide/figures/currency_trading_trf_back.png      | Bin 62770 -> 64233 bytes
 13 files changed, 8 insertions(+), 7 deletions(-)



More information about the gnucash-changes mailing list