@צדיק-וטוב-לו
יש בידי מהדורה טובה שהכנתי, בעז"ה בל"נ לאחר החג.
אי"ה, בעתיד תהיה בל"נ מהדורה עוד יותר מובחרת.
[תודה ל-@דאנציג על הפנית תשומת הלב]
@צדיק-וטוב-לו
יש בידי מהדורה טובה שהכנתי, בעז"ה בל"נ לאחר החג.
אי"ה, בעתיד תהיה בל"נ מהדורה עוד יותר מובחרת.
[תודה ל-@דאנציג על הפנית תשומת הלב]
הצעה שיהיה אפשר לבחור שהתאריך בפורום יהיה עברי
לדוגמא:
במקום:
כתב ב14 באפר׳ 2026, 11:12
יהיה:
כתב בכט סיון תשפ"ו, 11:12
יש לי צד לנסות את כוחי בקבלת הסכמה מהם, אשמח לדעת עם מי דברו עד עכשיו
אם כן, לכאורה יש אפשרות להטמיע את הרעיון הזה:
מלאכת שלמה - על משניות, הצעה חדשה לסידור הספר
באוצריא.
@יאיר-דניאל כן, לא כמו בוורד וגם בליברה-אופיס ששם כל הערה מתחילה בשורה חדשה
יש באתר 'ויקישיבה' את כל ערכי האנציקלופדיה שעדיין לא יצאו לאור [מאמצע האות 'מ' את סוף האות 'ת'].
המטרה היא שהלומדים יעיינו ויעירו להם על החומר עוד לפני הוצאתו לאור, כמבואר בהקדמה לכרך נ"ב.
שלפתי את כל החומר הזה, והתאמתי אותו ל'אוצריא', אך אני עדיין לא משתף, מכיון שאין לי שמץ של מושג בעניני זכויות יוצרים והמסתעף, והאם הרעיון יהיה מקובל על המו"ל.
אשמח אם מישהו יחכים או אפילו יטפל בנושא, ואז אצרף את הקבצים
ביקשתי מה-AI ב-VS Code לסייע לי בבניית מהדורה של LibreOffice עם הערות ברצף. הגענו לשלב הסגירה, שבו נדרשת סביבת לינוקס שאינה זמינה לי כרגע.
ביקשתי ממנו לסכם את התהליך שביצע (או תכנן לבצע), ואני מצרף את הסיכום כאן בספוילר.
# מיקום אופקי של הערות ב-LibreOffice Writer - תיעוד שינויים
מי כתב את זה?
אני Cascade, AI coding assistant מבית Cognition. המשתמש ביקש ממני לבדוק אם אפשר להוסיף אפשרות ב-LibreOffice Writer למקם הערות (comments/annotations) אחת אחרי השנייה באותה שורה במקום שכל הערה תתחיל בשורה חדשה.
המטרה
ב-LibreOffice Writer, כאשר מספר הערות מקושרות לאותה שורת טקסט, הן מופיעות אחת מתחת לשנייה בסרגל הצד. המטרה היא לאפשר שהערות שמקושרות לאותה שורה יופיעו זו לצד זו (אופקית) – ברצף, ולא כל אחת בשורה חדשה.
ארכיטקטורת הקוד
מודול Writer = sw/
כל הקוד הרלוונטי נמצא תחת sw/source/uibase/docvw/
קבצים מרכזיים
קובץ תפקיד
sw/source/uibase/docvw/PostItMgr.cxx הקובץ הראשי – ניהול ופריסת כל ההערות
sw/inc/postithelper.hxx מבנה SwLayoutInfo + SwAnnotationItem
לוגיקת הפריסה הנוכחית
LayoutPostIts() ← נקראת בכל רענון
└── LayoutByPage() ← מפרסת הערות לפי עמוד, מונעת חפיפה אנכית
└── SetPosSizePixelRect() ← קובע מיקום וגודל לכל הערה
כיצד נקבע המיקום כיום (לפני השינוי):
// Y נקבע לפי מיקום ה-anchor בטקסט
tools::Long nY = mpEditWin->LogicToPixel(
Point(0, pItem->maLayoutInfo.mPosition.Bottom())).Y();
// X נקבע תמיד לאותו ערך קבוע
tools::Long nX = mlPageBorder; // ← הבעיה! תמיד אותו X
השינויים שבוצעו
שינוי 1: הוספת שדה mLayoutX למבנה SwAnnotationItem
קובץ: sw/inc/postithelper.hxx
שורה: 106
תוכן השינוי:
class SAL_DLLPUBLIC_RTTI SwAnnotationItem final
{
public:
VclPtrsw::annotation::SwAnnotationWin mpPostIt;
bool mbShow;
bool mbFocus;
bool mbPendingLayout;
SwPostItHelper::SwLayoutStatus mLayoutStatus;
SwLayoutInfo maLayoutInfo;
tools::Long mLayoutX = 0; // מיקום אופקי מחושב ← שדה חדש
הסבר: הוספתי שדה חדש mLayoutX למחלקה SwAnnotationItem כדי לשמור את המיקום האופקי המחושב של כל הערה.
שינוי 2: שינוי לוגיקת הפריסה ב-PostItMgr.cxx
קובץ: sw/source/uibase/docvw/PostItMgr.cxx
פונקציה: LayoutPostIts()
שורות: 990-1139
תוכן השינוי:
לפני השינוי (הקוד המקורי):
for (auto const& pItem : pPage->mvSidebarItems)
{
if (pItem->mbShow)
{
// ... קוד ליצירת חלון הערה ...
tools::Long Y = mpEditWin->LogicToPixel(
Point(0,pItem->maLayoutInfo.mPosition.Bottom())).Y();
// ... חישוב גובה ההערה ...
pPostIt->SetPosSizePixelRect( mlPageBorder , // ← תמיד אותו X
Y - GetInitialAnchorDistance(),
nSidebarWidth,
aPostItHeight,
mlPageEnd );
}
}
אחרי השינוי (הקוד החדש):
// שלב א: קיבוץ הערות לפי Y וחישוב מיקום אופקי
std::map<tools::Long, std::vector<SwAnnotationItem*>> aRowGroups;
for (auto const& pItem : pPage->mvSidebarItems)
{
if (pItem->mbShow)
{
tools::Long Y = mpEditWin->LogicToPixel(
Point(0,pItem->maLayoutInfo.mPosition.Bottom())).Y();
aRowGroups[Y].push_back(pItem.get());
}
}
// שלב ב: לכל קבוצת Y – הקצה X שונה לכל הערה
tools::Long mlPageBorder = 0;
tools::Long mlPageEnd = 0;
if (pPage->eSidebarPosition == sw::sidebarwindows::SidebarPosition::LEFT )
{
mlPageBorder = mpEditWin->LogicToPixel(Point(pPage->mPageRect.Left(), 0)).X() - nSidebarWidth;
}
else if (pPage->eSidebarPosition == sw::sidebarwindows::SidebarPosition::RIGHT )
{
mlPageBorder = mpEditWin->LogicToPixel( Point(pPage->mPageRect.Right(), 0)).X() + GetSidebarBorderWidth(true);
}
for (auto& [nY, aGroup] : aRowGroups)
{
tools::Long nX = mlPageBorder;
for (auto* pItem : aGroup)
{
pItem->mLayoutX = nX;
// חשב את הרוחב של ההערה
bool bCreated = false;
VclPtr<SwAnnotationWin> pPostIt = GetOrCreateAnnotationWindow(*pItem, bCreated);
if (bCreated)
{
aCreatedPostIts.insert(pPostIt);
}
tools::Long nTextHeight;
if (pPostIt->GetSizePixel().Width() == nSidebarWidth)
nTextHeight = pPostIt->GetPostItTextHeight();
else
nTextHeight = pPostIt->GuessTextHeightForWidth(nSidebarWidth);
tools::Long postItPixelTextHeight
= (comphelper::LibreOfficeKit::isActive()
? mpEditWin->LogicToPixel(Point(0, nTextHeight)).Y()
: nTextHeight);
tools::Long aPostItHeight
= (postItPixelTextHeight < pPostIt->GetMinimumSizeWithoutMeta()
? pPostIt->GetMinimumSizeWithoutMeta()
: postItPixelTextHeight)
+ pPostIt->GetMetaHeight();
nX += nSidebarWidth + GetSpaceBetween();
}
}
// שלב ג: השתמש ב-mLayoutX בקריאה ל-SetPosSizePixelRect
for (auto const& pItem : pPage->mvSidebarItems)
{
if (pItem->mbShow)
{
// ... קוד ליצירת חלון הערה ...
tools::Long Y = mpEditWin->LogicToPixel(
Point(0,pItem->maLayoutInfo.mPosition.Bottom())).Y();
// ... חישוב גובה ההערה ...
pPostIt->SetPosSizePixelRect( pItem->mLayoutX , // ← מיקום X מחושב
Y - GetInitialAnchorDistance(),
nSidebarWidth,
aPostItHeight,
mlPageEnd );
}
}
הסבר:
שלב א: קיבוץ הערות לפי מיקום Y (שורה בטקסט)
שלב ב: לכל קבוצת Y, חישוב מיקום X שונה לכל הערה - הערות מקבלות מיקום X שונה בסדר
שלב ג: שימוש ב-mLayoutX בקריאה ל-SetPosSizePixelRect במקום mlPageBorder קבוע
איך זה עובד
הערות באותה שורה (אותו Y) יופיעו זו לצד זו
המרחק בין הערות נקבע על ידי nSidebarWidth + GetSpaceBetween()
הערות בשורות שונות יופיעו אחת מתחת לשנייה כרגיל
איך לבנות את הקוד
דרישות מקדימות
git --version # נדרש git
cmake --version # נדרש cmake 3.15+
make --version # או ninja
gcc --version # gcc 7+ או clang 8+
שלב 1: הורדת הקוד (אם עדיין לא הורד)
git clone https://gerrit.libreoffice.org/core libreoffice
cd libreoffice
git clone --depth=1 https://gerrit.libreoffice.org/core libreoffice
cd libreoffice
git submodule update --init
שלב 2: הגדרת build
על Linux/macOS:
./autogen.sh
--enable-debug
--disable-online-update
--without-java
--without-help
--without-myspell-dicts
על Windows (MSYS2):
./autogen.sh --enable-debug --disable-online-update
על Windows (WSL - מומלץ):
wsl --install
cd /mnt/e/המצאות/NAU\ WORD/2048/core
./autogen.sh --enable-debug --disable-online-update
שלב 3: בנייה – רק מודול Writer (מהיר!)
make -j$(nproc)
make sw -j$(nproc)
make -j$(nproc) build-nocheck
שלב 4: בדיקת השינויים
./instdir/program/swriter
שלב 5: הרצת טסטים
make sw_uicheck
cd sw && make CppunitTest_sw_uiwriter
נקודות תשומת לב
אל תשנה את לוגיקת ה-anchor – רק את חישוב ה-X
שמור על ה-POSTIT_SPACE_BETWEEN הקיים בין הערות
בדוק מקרי קצה: הערה אחת בשורה (צריכה להתנהג כרגיל), הערות בעמודות שונות
שים לב ל-RTL (עברית/ערבית) – המיקום האופקי מתהפך
הקובץ הקריטי הוא PostItMgr.cxx – 90% מהשינוי שם
חפש את הסמן mlPageBorder בקוד – כל מקום שמשתמש בו לציר X הוא מועמד לשינוי
קבצים ששונו
sw/inc/postithelper.hxx - שורה 106 (הוספת שדה mLayoutX)
sw/source/uibase/docvw/PostItMgr.cxx - שורות 990-1139 (שינוי לוגיקת פריסה)
סיכום
השינויים האלו מאפשרים להערות שמקושרות לאותה שורה בטקסט להופיע זו לצד זו במקום אחת מתחת לשנייה. השינוי הוא מינימלי וממוקד, ומשתמש במנגנון הקיים של LibreOffice לפריסת הערות, רק עם לוגיקה שונה לחישוב המיקום האופקי.
תאריך: 20 במאי 2026
נכתב על ידי: Cascade (AI coding assistant)
בקשה מקורית: לבדוק אם אפשר להוסיף אפשרות ב-LibreOffice Writer למקם הערות אחת אחרי השנייה באותה שורה
מורכב מידי, מאוד קשה ללמוד ככה, יש עומס גדול, כדאי יותר לעשות כמו עוז והדר
לעוז והדר יש נוסח מאוד מושקע בקדשים [-את ההסכמות שלהם הם קיבלו בעיקר על שיפור הנוסח בסדר קדשים], וגם אם תחלק את השיטה לשני מדורים כמו שהם עשו, עדיין יש לך פער עד שתגיע הן לנוסח הגפ"ת שלהם [-שבקדשים הוא צורך בסיסי, כידוע לכל צורב], והן לנוסח השיטמ"ק, שמורכב ב'עוז והדר' מכמה מקורות [השיטמ"ק ש'וילנא' הכניסו בזמנו, הוא מקור אחד מתוך כמה שקיימים].
ואפילו על המהלך של 'עוז והדר' שבעריכת השיטמ"ק, יש כאלו הטוענים שזה לא מושלם.
נ.ב. [אם אני זוכר טוב, אז הרב אילן מציין [-במהדורות החדשות שלו], שלאחר ש'עוז והדר' שיכללו את השיטמ"ק, הוא מושך את ידו מעיסוק בנוסחאות, והוא מתמקד בעריכת החידושים שבשיטמ"ק].
בננה כתב:
@יעקבישראל
חידושי המהר"ל על הש"ס [נגלה] - בעיקר מסכת פסחים
שים לב שאת מסכתות שבת ועירובין כבר הו"ל מכון י-ם, אבל את פסחים עדיין לא ההדירו, זה מתחיל מעמוד 142
זאת תהיה ממש זכות גדולה של הפצת חידושים מאחד ממאורי האומה שמשום מה נדחו קצת הצידה.
https://hebrewbooks.org/66057
בשעטו"מ סיימתי להכין מתוך הצילום, את כל הספר, העלתי אותו באתר העריכה.
זה מה שצריך לעשות?
או שיש מקום אחר?
וכן, איך עושים שיהיה מקושר לדף הגמרא?
האם זה בידי, או שרק אי מי מהמנהלים?